在计算机中以二进制的形式保存的数就是机器数。在机器数中首位是表示正负号的。0:正数,1:负数。
机器数表示的真正数就是真值。如:00000001=+1
,10000001=-1
编码
原码:符号位+真值的绝对值。
反码:非负数,自己。spa
负数,符号位不变,其他各们取反。
补码:非负数,自己。code
负数,符号位不变,其他各位取反,+1.即原码的反码加1.
在cpu中把减法转换为加法。图片
1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [00000001]反 + [11111110]反 = [11111111]反 = [10000000]原 = -0 // 这种表示方法不对。0不该该有正负。 // 正确过程 1 - 1 = 1 + (-1) = [00000001]原 + [10000001]原 = [00000001]补 + [11111111]补 = [00000000]补 = [00000000]原 = 0 1 - 2 = 1 + (-2) = [00000001]原 + [10000010]原 = [00000001]补 + [11111110]补 = [11111111]补 = [11111110]反 = [10000001]原 = -1