软考:原码、反码、补码、移码

   为了便于运算,带符号的机器数采用原码、反码和补码等不同编码方法。

       原码:最高位为符号位,0表示正号,1表示负号,其余位表示数值绝对值。比如:+1 0 000 0001-1 1000 0001 0原码有两种表示形式:+0:00000000-0:1 0000000

    但是直接使用原码在计算时会有麻烦,比如(1+-1=0,直接使用原码(0 0000001+1000 0001=10000010),结果为-2,也就是使用原码直接参与计算可能会出现错误的结果。所以原码的符号位不能直接参与运算,必须与其他为分开,这样会增加硬件的开销和复杂性。

     反码:同原码一样,最高位为符号位,0表示正号,1表示负号,正数反码与原码同,负数反码是其绝对值取反。比如1-1的反码:+1 0 000 0001-1 1111 11100原码有两种表示形式:+0:0 0000000-0:1 1111111,同样对于上面运算,使用反码结果为负0:(0 000 0001+1111 1110=11111111),而0是不分正负的,反码的符号位可以直接参与运算,而且减法也可以直接转换为加法。

       补码:最高位为符号位,0表示正号,1表示负号,正数补码与原码、反码同,负数补码为其反码末尾加11-1的补码:+1 0 000 0001-1 1111 11110有唯一的编码:+0:0 0000000-0:0 0000000。采用补码做上面的加法计算:(0 000 0001+1111 1111=00000000.

    由于补码能使符号位和有效位一起参加运算,从而简化运算规则,同时也使减法运算转换为加法运算,进一步简化计算机中运算器的电路,大部分计算机系统中都使用补码表示。

         移码:只要将补码的符号位按位取反获得相应移码表示。1-1的移码:+1 1 000 0001-1 0111 11110有唯一的编码: +0:10000000-0:1 0000000

         总结:

1、码制规则:正数的原码、反码、补码都相同;负数的反码(除符号位按位取反)、补码(反码+1),移码都是符号位按位取反。

2、作用:

反码:解决负数加法运算问题,将减法运算转换为加法运算,从而简化运算规则;

补码:解决负数加法运算正负零问题,弥补了反码的不足。

移码:常用来比较大小,一般会把浮点数的阶码用移码表示,把数值用移码表示出来可以一眼看出他们的大小。这样很容易判断阶码的大小,移码可用于简化浮点数的乘除法运算。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 17
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值