什么是一个数的原码,反码,补码

如题所述

原码,反码,补码针对的是定长二进制存储器表示的有符号整数。
正数的原码,反码,补码都相同。
负数的原码最高位为1,其他位为整数的绝对值(零有+0、-0之分)。
负数的反码最高位为1,其他位为整数的绝对值按位取反(零有+0、-0之分)。
负数的补码最高位为1,其他位为整数的绝对值按位取反再加一(零没有+0、-0之分,最常用)。
比如-1的原码为0x80000001,反码为0xFFFFFFFE,补码为0xFFFFFFFF。
//---------
在计算绝对值、取反、加一的过程中,无论提升成多少位去计算,最后装填时,都保留后几位(符号位以外相应位数)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-10-29

计算机中,只用补码表示带符号数。

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

求补码,也有更简单的方法,也用不着原码反码。

所以,原码反码,都没有任何用处。

让人学习原码反码,不就是忽悠吗?

------

计算机有:八位机、16 位机、32 位机。。。

在位数确定后,减去一个数,可以用加上另一个数,代替。

比如,限定使用两位十进制数,减一,你就可以用 +99 代替。

   25 - 1 = 24

   25 + 99 = (1) 24

取两位的结果,舍弃进位,这两种算法,功能就是相同的。

   99,就称为-1 的补数。

   98,就是-2 的补数。

   。。。

利用补数,就可以用加法代替减法。

补数怎么求呢?

两位十进制,共有 100 个数字。于是:99 = 100+(-1)。

------

计算机使用二进制,补数,就改称:补码。

八位二进制,共有 256 个数字。于是:补码 = 256+(负数)。

16 位二进制,共有 2^16 个数字。于是:补码 = 65536+(负数)。

正数,不需要做变换,直接相加即可。

计算机中,并没有原码和反码,所以,不用关心它们。

------

在电脑上为什么要用补码呢?

利用补码,就可以用加法代替减法。

那么,计算机中,只要有一个加法器,便可进行加减运算了。

乘除运算,也不在话下了。

第2个回答  2021-02-04

原码、反码、补码和移码是机器存储一个具体数字的编码方式,具体转换方法请参考视频教程:

原码反码补码移码概念和转换方法

第3个回答  2022-07-31

在计算机系统中,正负数值,一律采用【补码】来表示和存储。

所谓的【补码】,其实,它就是一个“代替负数做运算”的正数。

使用了补码之后,在计算机中,就没有负数了,也就没有减法运算了。

这样一来,计算机中,只要有一个加法器,就可以打遍天下了。

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

正数,怎么就能代替负数呢?

其实,在日常生活中,早已碰到过这种事情。

如:分针转一圈,周期是 60。

  倒拨 X 分,也可以用正拨 (60-X) 分代替。

用十进制来说明,就比较容易理解。

(下面,借鉴网友写的答案。)

如果限定,只使用 2 位 10 进制来计数,其周期是:10^2 = 100.

那么,可以有:

   25 - 1 = 24

   25 + 99 = (一百)  24

不用理会进位。只取 2 位数的结果,+99 和-1 就是等效的。

+99,就可以代表-1 进行计算; 加法,也就代替了减法。

那么,99 就称为-1 的补数。

同理,98 就称为-2 的补数。

。。。

计算公式:  补数 = 10^n + 负数, n 是补数的位数。

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

计算机用二进制,补数,就改称为:补码

如果限定,只使用 8 位 2 进制来计数,这就是:

  0000 0000 ~ 1111 1111 (十进制 255)。

其周期是:2^8 = 256.

那么,255 (即 1111 1111) 就称为-1 的补码。

同理,254 (即 1111 1110) 就称为-2 的补码。

。。。

计算公式: 补码 = 2^n + 负数, n 是补码的位数。

写成比较正式一点,【补码的定义式】就是:

 当 X < 0,[ X ]补 = - | X |, 

 其中的“”,也就是 n 位补码的计数周期 2^n

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

由补码的定义式可知,X 的补码,是用 X 的绝对值算出来的。

并不是某些人所说“原码反码符号位取反加一”。

求补码,与原码反码符号位,并任何无关系。

以后,再由补码求真值 X,也是用不到原码和反码的。

另外,原码和反码,并不具备“减法变加法”的功能。

所以,在计算机中,只是使用补码,原码和反码,都是不存在的。

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

原码和反码,可以说,一无是处。

而且,用“取反加一”,根本就无法解决-128 的问题。

那么,为什么还总是有人对此夸夸其谈、津津乐道呢?

一种人是上当受骗,还不自知的人。

  他们还以为,这是一种,必须掌握的知识。

还有一种人,就是诚心来骗人的。

  装作高人模样,欺骗初学者,误导学习方向。

相似回答