补码.原码.反码怎么运算的啊.详细一点

如题所述

计算机中,并没有原码反码,只有补码

补码,是在计算机中,自然形成的,跟原码反码毫无关系。

对于补码,应该直接用二进制来讨论,不要绕道并不存在的原码反码上去。

以八位机来说明如下。

数字 0,就是用八个位:0000 0000 来存放的。

数字-1,就是用零的二进制,减去一,即:

   0000 0000-1 = (1) 1111 1111,

   仍存放八个位,就是 1111 1111 (十进制255)。

数字-2,你就再减去一,就是 1111 1110 (=254)。

数字-3,你就再减去一,就是 1111 1101 (=253)。

。。。

-128,就是减 128 次一,最后得 1000 0000 (=128)。

这些就是负数的补码。

计算公式: 256+该负数

     =256-对应的正数

-18 的补码就是:256-18 = 238 = 1110 1110(二进制)。

你用“原码反码符号位取反加一”来计算,也一样是这个结果。

无聊的时候,再探讨原码反码吧,反正也没有任何用处。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-28
以8位机器码为例:
对正数而言,原码、反码、补码都是相同的。
十进制数7,
都是:
00000111
对于-7
原码,只是最高位用1表示负数,就是:
10000111
反码,就是在原码的上,除最高位(符号位)外,按位取反就行:
11111000
补码,就是在反码的基础上,最低位加1:
11111001
第2个回答  2022-10-17

在计算机中,使用的是二进制。

八个二进制位,称为一个字节。

计数范围是:0000 0000~1111 1111。

对应十进制:0 ~ 255,共有 256 个数字。

计数周期是:2^8 = 256。


在计算机中,并没有负数。

计算机中这些数字,都属于自然数,即“零和正数”。

但是,实际上,正数,也能当负数用的。

你看 2 位 10 进制数的计算:

   25 - 1 = 24

   25 + 99 = (一百)  24


如果你不舍弃进位,结果就 124,+99 还是 99。

如果,舍弃超出 2 位数的进位,+99 就相当于-1 。

这时的正数,就称为“负数的补数”。

算法是:补数=负数+周期 (10^n),n 是补数的位数。

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

在计算机中,255 = 1111 1111,就相当于-1。

示例:  0000 0001 = 1

  +  1111 1111 = 255

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

  (1) 0000 0000 = 0

舍弃了进位 1,这算式,就是:+1 -1 = 0。

如果保留进位,这就是: 1 + 255 = 256。

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

同理,254 = 1111 1110,就相当于-2。

   。。。

只要你舍弃进位,这些正数,就可以代表负数,参加运算。

这些正数,就称为:负数的补码。

  补码 = 负数 + 周期(2^n),n 是补码的位数。

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

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

从而就能简化计算机的硬件。

原码和反码,都没有这种功能。

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

符号位原码反码取反加一,这些,都是“鸡肋”

学习这个,花费不少时间,还是弄不懂“补码的意义”

老外数学不好,也就只能整这些骚操作了。

相似回答