我在汇编中有一个算术程序,但是当我加,减,乘正数时,它不会产生所需的输出。
例如
输入:
-1+2=66675 (should be 1)
-1-1=656745 (should be -2)
-1*-1=66757 (should be 1)
问题:
我如何将( - )和(1)视为一个?
如何用有符号数进行算术运算?
任何建议请...
答案 0 :(得分:1)
我建议阅读2的赞美以及有符号和无符号整数之间的区别。您显示的值看起来很可疑,就像有符号的int负值被转换为unsigned int值而不进行转换。负的int有一个设置为1的最高位。如果你在没有第一次屏蔽的情况下将该值推送到unsigned int,那么你会得到一个比预期更大的数字。
8位表示的示例:
signed value = -1
unsigned value = 255
binary = 1111 1111
Take the twos compliment:
1111 1111
XOR 0000 0000
equals 0000 0000
add1 0000 0001
dec value = 1
你可以在这里了解更多(他们有一个你可以看到的两个赞美补充的例子):http://academic.evergreen.edu/projects/biophysics/technotes/program/2s_comp.htm