在计算机中分为无符号数和有符号数,下面介绍的原码、反码、补码均为有符号数的编码格式,方便机器存储与运算。下面为总结的计算方法:
纯小数的原码、反码、补码:
正小数 | 负小数 | |
原码 | 本身 | 符号位为1,其余不变 |
反码 | 本身 | 符号位为1,数值部分取反 |
补码 | 本身 | 符号位为1,数值部分取反再加1 |
纯整数的原码、反码、补码、移码
正整数 | 负整数 | |
原码 | 真值转换为二进制数 | 符号位为1,其余不变 |
反码 | 等于原码 | 符号位为1,数值部分取反 |
补码 | 等于原码 | 符号位为1,数值部分取反再加1 |
移码 | 将原码符号位取反 | 将原码连同符号位一起取反,末尾在加1 |
注:移码表示中:0代表负数,1代表正数,补码与移码符号位相反!
例:
1、若机器数长度为5,真值 X=1101 ,分别计算原码、反码、补码、移码:
[X]原 = 01101 [X]反 = 01101 [X]补 = 01101 [X]移 = 11101
真值为正整数,原码等于反码等于补码
2、若机器数长度为5,真值X= -1101,分别计算原码、反码、补码、移码:
[X]原 = 11101 [X]反 = 10010 [X]补 = 10011 [X]移 = 00011