我是汇编新手,我有一个关于如何表示负数的问题
我有三个 DWORDS 变量,比方说:
result DWORD 0
i DWORD 3
j DWORD 5
我想计算这个公式:结果= i - j + 8
但是,当我执行 i-j 时,由于符号,结果将是一个非常高的数字
那么最后如何才能让结果好呢?
对于 32 位 DWORD,整数范围为 –2147483648 到 2147483647 或十六进制 -0x80000000 到 0x7FFFFFFF。
因此数字 -1 的存在类似于 0xFFFFFFFF。 (如计数器下溢)
如果设置了高位 (31),则该数字为负数。要将负数(负数)变为正数,您必须对数字进行补码并加 1。
Example:
0xFFFFFFFE //-2
xor 0xFFFFFFFF //binary complement
---------------
0x00000001 //result of complement
+ 0x00000001 //add 1
---------------
0x00000002 //Result of negation is 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)