原码,反码,补码总是搞不清楚 写个文章帮助记忆

原码       

原码,顾名思义就是现实生活中表示的码,原来的码。其中最高位为符号位,0代表正数,1代表负数

反码        

正数的反码,就是其本身

负数的反码,就是在原码的基础上,符号为不变,其余各位取反

补码

正数的补码,就是其本身

负数的补码,就是在原码的基础上,符号位不变,其余各位取反后+1,即反码+1 

 

Example

以8位二进制为例

0000 0001     1的原码

1000 0001    -1的源码

进而,8位二进制可表示[1111 1111, 0111 1111],即[-127, 127]

Exercise

例1:     

5 -1 的运算

即 5 + (-1)

0000 0101      ---       5   二进制原码 

1000 0001      ---      -1   二进制原码 

计算机不管这些,我只要补码(相加,计算机表示只会+ 谢谢),其他爱谁谁

0000 0101      ---       5   二进制原码 (搬下来方便取反)

0000 0101      ---       5   补码   正数的补码,就是其本身

 

1000 0001      ---      -1   二进制原码 (搬下来方便取反)

1111 1111        ---      -1    补码    负数 符号位不变其余按位取反,再+1

补码相加↓

0000 0101       ---       5 

1111 1111         ---      -1 

0000 0100    -- 相加的结果 溢出位不要了

0000 0100  =  4

 

例2:     3 -5 

即 3 + (-5)

0000 0011    ----  3  原码

1000 0101    ---- -5 原码

0000 0011    ----  3  补码

1111 1011    ---- -5  补码

相加

1111 1110   ----补码相加结果(负的) 

1000 0010  --- 负数 符号位不变其余按位取反,再+1 (逆向算回去了-二进制原码)

1000 0010   = -2 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值