计算机为什么选用二进制补码(2)---选用补码原因

总结如下几点:

1.补码本身具有幂等性:该特性决定我们虽然运算使用补码,但是通过两次补码可以回到原码;
  ((X)补)补=X
   a+b=(a补+b补)补
   
2.补码解决了正0 负0的二义性,使0的表示得到统一;
  正零:00000000
  负零:10000000
  这两个数其实都是0,但他们的原码却有不同的表示。
  但是他们的补码是一样的,都是00000000


3.CPU将加,减法统一为加法运算;
  [a-b]补=a补+(-b)补


4.使符号位能与有效值部分一起参加运算,从而简化运算规则。
  补码机器数中的符号位,并不是强加上去的,是数据本身的自然组成部分,
  可以正常地参与运算。CPU并不知道正负,使其能够按照和无符号数一致的运算规则进行处理;


5.补码使二进制的加、减、移位等操作和十进制具有相同的运算规律;


6.负数-a实际上使用0-a结果,通过二进制运算0-a就是-a的补码,由此可见定义补码就是要求所有算术运算符合现有的运算规律;

------------------------------------------------

补码意义:

所以补码的设计目的是:

⑴ 使符号位能与有效值部分一起参加运算,从而简化运算规则。补码机器数中的符号位,并不是强加上去的,是数据本身的自然组成部分,可以正常地参与运算。

⑵ 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。

所有这些转换都是在计算机的最底层进行的,而在我们使用的汇编、c等其他高级语言中使用的都是原码。

CPU对于补码完全不知情,其只按照指令机械的按照电路设计进行工作,并对某些溢出标志位进行设置;
所有的逻辑由编译器来决定,处理的数是有符号数还是无符号数,有符号数出现溢出怎么处理,这些在编译时已经确定;
编译器送给机器的机器代码中:负数已经进行补码编码,同时编译器负数对负数结果进行转换为原码或10进制数据显示给用户;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值