一.机器数及表示
1.原码:符号位加上真值的绝对值(第一位表示符号、其余位表示值)
如果是8位二进制:
[+1](原码) = 0000 0001
[-1](原码) = 1000 0001
8位二进制数取值范围:
[1111 1111 , 0111 1111]------->[-127 , 127]
2.反码:正数的反码是它本身,负数的反码是在其原码的基础上,符号位不变,其余各位取反。
8位二进制:
[+1] = [00000001](原码)= [00000001](反码)
[-1] = [10000001](原码)= [11111110](反码)
取值范围:[-127, +127]3.补码:正数的补码就是其本身,负数的补码是其原码的基础上,符号位不变,其余各位取反,然后加1(也就是在反码的基础上+1)
8位二进制:
[+1] = [00000001](原码) = [00000001](反码) = [00000001](补码)
[-1] = [10000001](原码) = [11111110](反码) = [11111111](补码)
取值范围:[-128, +127]
因为机器使用补码,所以对于编程中常用到的32位int类型,可以表示范围是: [-231, 231-1] 因为第一位表示的是符号位.而使用补码表示时又可以多保存一个最小值。
4.未完待续。。。。。。。。。。。。