原码:最高位是符号位,0是正数,1是负数,剩下的为数值位
反码:符号位不变,数值位按位取反
补码:反码+1
计算机中数值是以“补码”的形式存储的
补码:负数的存储形式
反码:运算结果
正数的补码、原码是相同。
负数的补码:符号位为1,数值位是原码按位取反得反码后加1.
总之,正数的原码、反码和补码是完全相同的;
负数的原码、反码和补码其形式各不相同。
另外,特别要注意的是,对于负数的反码和补码(即符号位为1的数),其符号位后边的几位数表示的并不是此数的数值。如果要想知道此数的大小,一定要求其反码或补码才行。
例:
计算机的二进制数的有符号表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小;
原码:在数值前直接加一符号位的表示法。
例如: 符号位 数值位
+7 8位存储 0 0000111
-7 1 0000111
反码:正数的反码与原码相同,负数的反码将数值部分按位取反:
例如: 符号位 数值位
+7 反码 0 0000111
-7 1 1111000
补码:正数的补码与原码相同,负数的补码是反码 + 1:
例如: 符号位 数值位
+7 补码 0 0000111
-7 1 1111001