原码和补码详解,绝对能听懂!!!!

原码和补码

原码

我们知道,在计算机里只有高电压和低电压的差别,也就是计算机只有0 或者 1。计算机的计算只支持二进制,那么十进制的计算在计算机里是如何进行的呢?

首先,如果要计算十进制的数据,我们首先要把它切换成二进制数据。

就比如 十进制数 2在二进制中表示为:

0000 0010

但显而易见 负数是没办法用这种方法表示的。

于是,我们就需要一个特殊的位来表示正负,第一个占位理所应当就成了表示正负的占位。1表示负数 0表示正数

-2 用二进制表示为:

1000 0010

这就是原码,一种可以表示正负的二进制数。

上面的原码仍存在一个问题,当进行二进制加法的时候。在某些极端情况,不可避免地会出现运算错误。

例如:2 +(-2)

  0000 0010
+ 1000 0010
-------------
  1000 0100

结果为 -4 显然不成立

于是,原码变出现了差错。

此时,就需要补码!

补码

上述问题,我们可以换一种思维来解决这个问题。

我们还拿 2和(-2)举例子。

  0000 0010
+ xxxx xxxx
 ------------
  0000 0000

我们可以以此反过来求 这一堆x 是多少 这一堆 x 代表的就是-2 的二进制补码

易得 那一堆 x为:

1111 1110

反过来,我们也可以通过补码来通过这个补码来判断它的正负 。

例如1111 1110的第一个位数为1 ,该二进制数就为负数。但我们没办法通过补码来得知这堆补码所代表的是哪个数 。

所以,就需要我们把他转换为 原码的绝对值。

计算方法为:减0000 0001取反

实际计算:

 1111 1110
-0000 0001
-----------
 1111 1101

取反

0000 0010

这个数的绝对值是 2 ,又因为我们通过它的补码知道它是负数,所以为-2。

总结:

1.负数表示需要补码,算出补码的方式如下:

该数绝对值的原码

取反

加0000 0001

补码算回的方法跟上上面说的公式相反,和上面的例子一致。

2.正数和0的补码和原码一致。

  • 16
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值