有符号数原码、反码、补码以及求补运算

原码
    原码表示法最高位为符号位,该位为0表示正数,1表示负数。其余位表示数的绝对值。
反码
    对于一个带符号的数来说,正数的反码与其原码相同;负数的反码为其原码除符号位以外的各位按位取反。反码常用来做求补码过程中的中间形式。
补码
    正数的补码与其原码和反码相同;负数的补码是对它的原码除符号位以外各位取反,并在末位加1而得到,即为该数的反码加1。计算机内的数一般以补码形式表示。在补码中用(-128)D代替了(-0)D,注意:(-128)D没有相对应的原码和反码,(-128)D = (1000,0000)B。
求补运算
    求补运算不考虑符号位,对它的原码各位取反,并在末位加1而得到。对一个数进行求补运算所得的是该数相反数的补码。有一个方法可以快速进行求补运算,从右边数起,直到第一个1(包括其自身)之间的位值不变,其余位求反就是结果。

附:分析2-1=1在计算机内的运算原理(假设机器字长为8位)

  • 使用补码:2-1=2+(-1) (即将符号位交给1使1变成-1)

    -1的原码:1000,0001
    按位取反:1111,1110 (注意:最高位即符号位不参与取反运算)
    -1的补码:1111,1111

            2 : 0000,0010 补码
    +     -1 : 1111,1111 补码
    ______________________
                1,0000,0001 补码 -> 最高位溢出丢弃 -> 0000,0001 补码/原码 -> (1)D
  • 求补运算(可逆):2-1=2+(1的相反数) (即减去1等于加上1的相反数)

    1的原码 :0000,0001
    各位取反:1111,1110
    末位加1 :1111,1111 (即为-1的补码,也就是1相反数的补码)

            2 : 0000,0010 补码
    +     -1 : 1111,1111 补码
    ______________________
                1,0000,0001 补码 -> 最高位溢出丢弃 -> 0000,0001 补码/原码 -> (1)D
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值