什么是补码,如何转换反码、补码、原码?

什么是补码,如何转换反码、补码、原码?,第1张

反码补码原码怎么转换,来看看方法吧。

1、首先原始代码的最高位是符号位,0表示正,1表示负,中间值表示数字的绝对值。

2、符号的反转,正数符号的反转与原符号相同,负数的补数是该符号的最低有效位数加上1。

3、补数,正数的补数与原代码相同,负数的补数在其倒数第一的基础上加1。零分为+0和-0。 进行不同符号的加法或同一符号的减法时,不能直接进行加法或减法,不能直接给出正负的结果。

4、必须先取绝对值,然后再加上减法。 符号比特由较大的绝对值决定,因此出现了转码。 反码是对原始代码的改进。补码在针对加减运算和正负零的问题上都解决了,平时用的最多的也就是补码。

补码,应该是最容易理解的知识了。

小学生都可以自己摸索出来。

按照四位二进制来说,共有 16 组代码。

数字 0 的二进制,就是 0000,

数字 1 的二进制,就是 0001,

。。。

数字 7 的二进制,就是 0111。

可见下表:

零和正数的补码

负数怎么办?

就从 0000,依次向下减,就行了。那么:

数字-1 的二进制,就是 0000-1 = (1) 1111 = 15(十进制)。

(括号中的 1,是借位,舍弃不要了。)

数字-2 的二进制,就是 1111-1 = 1110 = 14。

数字-3 的二进制,就是 1110-1 = 1101 = 13。

。。。

数字-8 的二进制,就是 1000 = 8(十进制)。

(别再减了。再减,就是 0111 = +7 了。)

可见下表:

负数的补码

综合到一起,就是-8~+7 的四位补码。见下表:

四位补码

总结:

 零和正数的补码,就是数字本身(也可转为二进制)。

 负数的补码,就是: 16+这个负数。

 (如果是 8 位二进制,就改用: 256 + 这个负数。)

--------

整个推算过程,并不需要使用“原码反码符号位”这些垃圾。

计算时,使用十进制,简单方便。得出的补码,当然也是十进制。

如果需要二进制,就变换一下。

补码,很难吗?

如果不涉及原码反码符号位,就一点也不难。

-----------

补码有什么用呢?

 利用补码,可以把减法运算,转换成加法。

 (所以,在计算机中,有一个加法器,就够用了。)

例如:6-2 = 4,用补码运算如下:

 6 的补码是 0110、-2 的补码是 1110。

 0110 + 1110 = (1) 0100 (= 4 的补码)

 (括号中的 1,是进位,舍弃不要了。)

注意:

 如果运算结果超出了-8~+7 的范围,结果将是错的。

 这种现象称为“溢出”。

 再注意一下:进位,并不等于溢出。

---------

因为补码的这个特性,所以,在计算机中,只是使用补码存放数据。

原码反码,在计算机中,都是不存在的。

原码反码 的用途,只是用于“笔算”。

其实,笔算的方法,并非只有“取反加一”。

原码反码,只是砖家为了增加收入,瞎编的垃圾而已。

所以,大家,完全不必在原码反码 上浪费时间精力。

但是,考试怎么办?

呃 ...,千万别跟老师较劲,他怎么讲,你就怎么答吧。

补码(Two's complement),是有符号数的一种二进制表示方式。

我们用B2Tw来表示一个补码。其中w代表二进制数的位长,B2T的含义其实是“二进制转补码”。

计算补码实际表示的数,我们需要将每一位上的值和对应权重相乘然后进行相加。每一位(索引记为i,从0开始,从右往左递增)的权重为2i,但最高位的权重比较特殊,需要取负数,为-2w-1。

补码表示的最大值和最小值

对于一个位长为w的补码表示,最大值TMaxw为2^(w-1) - 1,此时最高位为0,其余位都是1。最小值TMinw为-2^(w-1),此时最高位为1,其余位都是0。

如对于4位的补码,最大值TMax4 = B2T4(),对应的值为2^3 - 1 = 7,最小值为B2T4(),对应的值为-2^3 = -8。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5800095.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-01
下一篇2023-02-01

发表评论

登录后才能评论

评论列表(0条)

    保存