补码

写在最开始:

一个数减去一个数,6-4=2,在计算机里就是等于是,一个数加上一个数的补码,6+(-4)=2,6+(6,6是-4的补码)=12

1,无符号数不包括负数,最高位0和1只表示值的大小,不表示符号。

2,一个8位有符号数的表示如下:

0111 1111 : 127

0000 0010 : 2

0000 0001 : 1

0000 0000 : 0

1111 1111 : -1

1111 1110 : -2

1000 0001 : -127

1000 0000 : -128

3,原码,反码,补码,模

对于10进制数的运算,6 - 4 = 2 ,对于这个算式。

模:10,-4的补码:10-4=6。

高位溢出:6-4=6+6(-4的补码)=12=10(高位溢出,舍去)+2=2。所以最后的结果还是2。

减法变加法(计算机没有减法,只有加法):6(-4的补码),把减法变成了加法。

对于2进制而言:

口诀:正数的原码等于反码等于补码。负数的反码等于原码取反(除最高位符号位),补码等于原码取反再加1。

原码:0000 0001 与 1000 0001

反码:0000 0001 与 1111 1110

补码:0000 0001 与 1111 1111 : 也就是1和-1 。

我的理解:对于计算机而言,原码和反码没有意义,因为没有作用,计算机只会存储补码,原码和反码的概率方便我们交流。

重申一遍:计算机只知道补码,只存储补码。

为什么计算机只存储补码?

1,计算机只有加法运算,所以需要变减法为加法。计算之后再高位溢出舍弃。

2,有符号数和无符号数可以直接相加操作。

3,符合计算机硬件。

求一个数的补码:

方法1:口诀:正数的原码等于反码等于补码。负数的反码等于原码取反(除最高位符号位),补码等于原码取反再加1。

-128 原码:1000 0000 反码:1111 1111 补码:1000 0000 (正确的情况)

-128 原码:1000 0000 反码:1111 1111 补码:0000 0000 (错误的情况,不能使用口诀的一个特殊情况)

方法2:反码 = 模 - |原码|(绝对值,也就是一个正数,一个无符号数),对应8位数而言,模为1 0000 0000。

方法2可以保证一定正确求到补码。绝对值:|-1| =  0000 0001 , |-128| =  1000 0000 

-128 原码:1000 0000 反码:1111 1111 补码:1000 0000 (正确的情况,1 0000 0000 - 1000 0000 = 1000 0000 ) 

-1 原码:1000 0001 反码:1111 1110 补码:1111 1111 (正确的情况,1 0000 0000 - 0000 0001  = 1111 1111) 






















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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值