网站首页 >> 创业资讯 >> 正文 提交收录

由源码和反码怎么得到补码(简单说明源码反码和补码的计算公式及它们之间的关系)

时间:2022年06月08日 12:06:18

本文目录一览:

原码、补码、反码之间是怎样转换的?

直接转换,即可。

比如,12,

其原码、补码、反码,都相等,都是 12。

 

正数的补码,是其本身。

负数的补码,就用它的正数,减一取反,即可得到补码。

 

原码、反码,根本就没有用。

所以,在计算机中,也没有原码和反码。

那么,我们也不必关心这些。

原码,反码和补码之间有怎样的计算关系?

原码

正数的符号位为0,负数的符号位为1,其它位按照一般的 *** 来表示数的绝对值.用这样的表示 *** 得到的就是数的原码.

反码

对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反.

补码

正数的补码与其原码相同,负数的补码为其反码在更低位加1

计算机源码,反码,补码之间怎么计算?

转换 *** :

 如果是正数或零,则首位为 0,补码=原码=反码。

 否则,首位为 1,数值位取反加一,即可实现“补码与原码”互换。

例如:

 对 1111 1001 取反,为 1000 0110,再加一,得:1000 0111。

 对 1000 0111 取反,为 1111 1000,再加一,得:1111 1001。

这说明,补码 ←→ 原码, *** 是相同的。

原码反码补码

无论什么类型的数字,在计算机中,都是以“二进制代码”存储的。

实用的,只是补码。

而原码和反码,在计算机中,并不存在。

因为,原码反码的定义,都是不合理的,不适于计算。

下面按照八位二进制来说明补码的定义,其它位数,自行脑补。

十进制数 0,存放的,就是二进制 0000 0000。

十进制数 +1,就加上 1,二进制是 0000 0001。

十进制数 +2,就再加 1,二进制是 0000 0010。

。。。

十进制数 +127,加 1加 1...,就加到了 0111 1111。

+127,这就是更大数值。

----------

负数怎么办? 你就从 0,依次递减吧。

十进制数 0,以二进制 0000 0000 存放。

十进制数 -1,就减去 1,得 1111 1111 = 255(十进制)。

十进制数 -2,就再减 1,得 1111 1110 = 254。

十进制数 -3,就再减 1,得 1111 1101 = 253。

。。。

十进制数 -128,减 1减 1...,得 1000 0000 = 128。

不要再减了,这就是最小值了。

(你再继续减,就是 0111 1111,这就是+127 了。)

因此,最小数值就是-128。

----------

总结:

零和正数:直接用二进制存放。

负数:存放形式是【256+这个负数】。

这套存放格式,就是所谓的【补码】。

 

求【补码】,就是这么简单。

完全不用绕到“原码反码符号位”那么远。

可以用十进制来计算。如果需要二进制,你就再转换一下。

用这个 *** ,不涉及原码反码符号位,就少了不少麻烦事。

----------

为什么负数用补码存储?

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

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

例如,6-2 = 4,在计算机中用补码代替数字,运算如下:

6 的补码是 0000 0110

 + -2 的补码是 1111 1110

-----------------

 (1) 0000 0100 (= 4 的补码)

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

注意:

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

 这种现象称为“溢出”。

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

---------

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

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

原码反码 的用途,仅仅是用于“心算、笔算”。

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

另外,-128,有补码,但是却没有原码反码!

用“取反加一”来求-128 的补码,无异于缘木求鱼。

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

但是,考试怎么办?

呃 ...,还是别跟老师较劲,他怎么乱讲,你就怎么答吧。