How to add integers without correction?
古いコメントを表示
when using integer class such as int8 in matlab, and some calculation result is bigger than the upper range (for int8 , the upper range is 127), matlab would automatically set the value to the maximum.
eg.
a=int8(126);
b=int8(2);
c=a+b; % matlab would gives c=127, since 128 exceed the upper range of int8
but in some cases, i want to get a negetive result, like many programming languages do
i want c to be -128 because 01111110+00000010=10000000 and it's -128 for int8
this could be done by a "bitadd" like
function int1 = bitadd(int1,int2)
while (int2 ~=0)
carry=bitand(int1,int2);
int1=bitxor(int1,int2);
int2=bitshift(carry,1);
end
end
however this is very inefficient, since a while loop in the function
Setting the result to maximum should be additional correction, so is there a faster method to do bitwise add without such correction?
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Programming についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!