计算机有符号数为什么采用补码表示

两个原因:

1. cpu对二进制采用基本的加减法,比如以下两个有符号数相加,如果采用补码的方式:

  (+10)  00001010
  +(-20)11101100
---------------------------  

                11110110

结果是-10。而如果采用反码的方式(就是左边最高位代表正负),如果让cpu进行简单的相加计算,那下边的计算结果就不是-10了,而是-30了。那如果像得到正确的结果,可能还需要修改cpu的硬件设计来满足有符号数(补码)表示的计算。

  (+10)  00001010
  +(-20)10010100
---------------------------  

                10011110

 

具体补码,反码的概念可以参考王爽 汇编语言的附录2.

补充一句,cpu计算的时候,不管你是有符号数,还是无符号数,只是进行简单的2进制计算。但是会相应的设置标志位(标志寄存器),依据标志寄存器不同的标志位来判断,比如cmp,je等汇编指令。具体参考汇编语言11.9节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值