原码、反码及补码的计算

有符号数据表示法
在计算机内,有符号数据有三种表示方法:原码、反码和补码,所有数据的运算都是采用补码进行的

  • 原码:就是二进制定点表示法,即最高位是符号位,“0”表示正,“1”表示负,其余位表示数值的大小
  • 反码:正数的反码与原码相同,负数的反码是对其原码逐位取反,但符号位除外
  • 补码:正数的补码与其原码相同,负数的补码是在其反码的末位加1

例如:用原码、反码和补码分别表示7,-7
首先得到7的二进制:00000111 --> 111
原码:

符号位 数值位
0 00000111(7)
1 00000111(-7)

整数原码最高位为0,负数源码最高位为1,其余为数值位

反码:

符号位 数值位
0 00000111(7)
1 11111000(-7)

正数的反码于原码相同,负数的反码与原码符号位不变,数值位取反,1变0,0变1

补码:

符号位 数值位
0 00000111(7)
1 11111001(-7)

正数的补码与原码相同,负数的补码是在补码的基础上加1

练习题
原码、反码及补码的计算