C-原码、反码和补码

原码

计算机使用二进制编码存储数字. 用第一个bit位表示符号, 1 表示负号, 0 表示正号.

4个bit能够表示的数字:

  • 最小: 1111 → -7
  • 最大: 0111 → 7

但是原码不能进行加减法运算, 1 + (-1) = 0001 + 1001 = 1010 = 10.

反码

  • 正数的反码等于它的原码
  • 负数的反码是在其原码的基础上, 符号位仍为 1, 其余位取反

但是原码和反码都存在 +0 和 -0 的现象, 4 个bit能表示 16 个数, 里面却含有 2 个 0.

使用反码的编码方式存储数字, 其运算过程如下:

1 + (-1) = 0001 + 1110 = 1111 = -0

补码

  • 正数的补码等于它的原码
  • 负数的补码是在其原码的基础上, 符号位仍为 1, 其余位取反并加 1

4 位二进制数能够表示的范围是: -8 ~ +7 (-8 = 1000)

使用补码的编码方式存储数字, 其运算过程如下:

1 + (-1) = 0001 + 1111 = (1)0000 = +0

posted @ 2022-11-24 20:05  Khrushchefox  阅读(121)  评论(0编辑  收藏  举报