原码表示

image.png|600

0的表示:0 的原码表示有两种形式,即分别按照正数和负数表示。

  • +0 == 00…0
  • -0 == 10…0

补码表示

image.png|600

image.png|600

0的表示: 0 的补码表示形式是唯一的
表示范围:

  • 定点整数:
  • 定点小数:

计算机中的整型数据(int)均用补码来表示。

机器数原码真值补码真值
000000
0001+1+1
0010+2+2
0011+3+3
0100+4+4
0101+5+5
0110+6+6
0111+7+7
1000-0-8
1001-1-7
1010-2-6
1011-3-5
1100-4-4
1101-5-3
1110-6-2
1111-7-1
可以看出来, 补码的正数个数和负数个数是一样的

反码表示

image.png|600

image.png|600

机器数原码真值反码真值
000000
0001+1+1
0010+2+2
0011+3+3
0100+4+4
0101+5+5
0110+6+6
0111+7+7
1000-0-7
1001-1-6
1010-2-5
1011-3-4
1100-4-3
1101-5-2
1110-6-1
1111-7-0

移码表示

即为补码的符号位取反, 其它都是相同的

  • 0: 表示负数
  • 1: 表示正数
机器数原码真值移码真值
00000-8
0001+1-7
0010+2-6
0011+3-5
0100+4-4
0101+5-3
0110+6-2
0111+7-1
1000-00
1001-1+1
1010-2+2
1011-3+3
1100-4+4
1101-5+5
1110-6+6
1111-7+7

定点机器数转换