首页 > 编程知识 正文

补码和原码的,补码是在原码的基础上

时间:2023-05-05 18:23:35 阅读:245698 作者:4707

原码和补码

原码

我们知道,在计算机里只有高电压和低电压的差别,也就是计算机只有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的补码和原码一致。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。