两个原因:
1. cpu对二进制采用基本的加减法,比如以下两个有符号数相加,如果采用补码的方式:
(+10) 00001010
+(-20)11101100
---------------------------
11110110
结果是-10。而如果采用反码的方式(就是左边最高位代表正负),如果让cpu进行简单的相加计算,那下边的计算结果就不是-10了,而是-30了。那如果像得到正确的结果,可能还需要修改cpu的硬件设计来满足有符号数(补码)表示的计算。
(+10) 00001010
+(-20)10010100
---------------------------
10011110
具体补码,反码的概念可以参考王爽 汇编语言的附录2.
补充一句,cpu计算的时候,不管你是有符号数,还是无符号数,只是进行简单的2进制计算。但是会相应的设置标志位(标志寄存器),依据标志寄存器不同的标志位来判断,比如cmp,je等汇编指令。具体参考汇编语言11.9节。
4065

被折叠的 条评论
为什么被折叠?



