一个负数只能用其补码表示吗?没有源码?

2025-06-27 15:15:45
推荐回答(2个)
回答1:

一个负数在计算机中是以补码存储的,运算的时候也是用补码进行运算。
实际上负数是有原码的,下面看看负数的补码是如何得到的。
我们是如何得到补码的呢?步骤如下:
1.首先求出负数的绝对值的原码,将原码最高位置1(其实就是以此表示负号而已),就得到该负数的原码。
2.保持最高位1不变,其他位取反(1变成0,0变成1),就得到该负数的反码。
3.最后反码再加1,计算得到该负数的补码。
所以负数是有原码的,只不过计算机中负数以补码形式存储以及运算。

回答2:

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

可以从十进制的计算来理解。

比如,限定使用两位十进制数(0~99)

   计数周期就是: 10^2 = 100。

那么有:

   25 - 1 = 24

   25 + 99 = (一百)  24

舍弃进位,只取两位的结果,+99 就和-1 是等效的。

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

同理,98,就是-2 的补数。

。。。

公式: 负数 X 的补数 = 周期 100 + 负数 X。

如果是三位数,补数就是: 10^3 + 负数 X。

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

计算机用二进制,补数,就称为“补码”了。

利用补码,就可以把加、减法,统一用加法来实现。

这样做,就能够简化硬件。

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

  0000 0000 ~ 1111 1111。

对应十进制,就是: 0 ~ 255。

这里共有 2^8 = 256 个组合。计数周期也就是 2^8。

此时,-1 的补码,就是 255 (1111 1111)。

同理,-2 的补码,就是 254 (1111 1110)。

。。。

计算公式:

 当 X < 0,则 [ X ]补 = 周期 2^8 + X。

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

求补码,并不需要“原码反码符号位取反加一”。

扯上那些乱七八糟的,你就不会理解:补码的意义。

而且,计算机中,根本就没有原码和反码。

因为,计算机,根本就不用原码和反码。

那么,原码和反码,到底有什么用呢?

只有在老师讲课、考试时,才会用到它们。

它们,只是老师讨饭碗而已。