二进制:整理

二进制:整理

最初的一个问题是来源于 signed byte的范围为什么是[-128,127],为什么不是[-127,127]。

下面的内我直接使用+1-1进行举例

机器数与真值

一个数在计算机中的表示都是直接使用二进制,这种二进制表示方式就是机器数。因为有正负之分,所有在机器数中采用最高位来表示正(0)或者负(1)。

所以对应的+1-1的机器数为:

+1   0000 0001
-1   1000 0001

机器数0000 00011000 0001对应的真值分别为 +1-1

原码

符号+真值对应的绝对值。

+1 的源码为 0000 0001

-1 的源码为 1000 0001

那么如果使用原码表示的话,signed byte的范围是[0111 11111111 1111]。

反码

反码:正数的反码是原码本身;负数的反码是符号位不变,其他位取反

补码

补码:正数的补码是原码本身;负数的补码是反码+1

原因

  • 计算机中没有那么多的计算方式,加+是最基础的计算方法,那么对于减肥就是使用加上一个负数。
  • 1-1=0=1+(-1)

如果使用原码表示 1-1 = 0 结果是错误的。

如果使用反码表示 1-1 = 0,最后的结果是0000 0000 1000 000都表示0,因为是+0-0,所以才导致了理论的表达范围为[-127,127]

如果使用补码表示 1-1 = 0,最后的结果是0000 0000 表示0,所以可以直接使用1000 0000表示-128

你可能感兴趣的:(二进制:整理)