计算机中的数值用二进制补码表示
正数的补码
正整数的补码与原码相同。
如127的补码为:0111 1111
负数的补码
负数的补码为:先写出负数的原码,符号位不变,数值位各位取反,最后整个数加1;
如-1的补码,8位二进制表示:
原码:1000 0001 ->符号位不变,数值位取反->1111 1110;最后整个数加1 ->1111 1111
因此-1在计算机中的二进制表示为1111 1111;
如果用16位二进制表示为:1111 1111 1111 1111;
-1的二进制表示为:1111 1111
-2的二进制表示为:1111 1110
-3的二进制表示为:1111 1101
-4的二进制表示为:1111 1100
(以上只需要记住-1的二进制表示为1111 1111,-2的二进制表示相当于-1-1即 1111 1111-1 = 1111 1110; -3 = -2-1 即
1111 1110-1 = 1111 1101
最后一位减1不够向前借位)
-128的二进制表示为:1000 0000
-127的二进制表示为:1000 0001
(理解为-127 = -128+1 = 1000 0000 +1 = 1000 0001)
由此可以推断出char类型的数值范围是-128-127. u8类型即无符号八位数为:0-256。
如-1和-128的二进制表示为常识,应该记住