简介
针对的是有符号的,即最高位为符号位,0正1负
原码 | 反码 | 补码 | |
---|---|---|---|
正整数 | 最高位为0 | 同原码 | 同原码 |
负整数 | 最高位为1 | 非符号位取反 | 反码+1 |
负数-X的补码等于+X-1的取反码(即非符号位0变1,1变0);
正整数与负整数相加时,是补码操作,得到的结果中,舍弃溢出位,得到的结果也是补码;
问题与答案
为啥有符号的char可以表示 -128~127即 -2^7 ~ 2^-1范围的数值?
因为最高位为符号位,当最高位为0,可以表示0,1~
当最高位为1,可以表示-1~-127还有-128,因为负数在计算机中是通过补码表示的,所以最小负数的源码为(1111 1111),此时的补码为(1 0000 0000),此时为转换为10进制为128,此时表示为-0;
0的表示
原码 | 反码 | 补码 | |
---|---|---|---|
+0 | (0)000 0000 | (0)000 0000 | (0)000 0000 |
-0 | (1)000 0000 | (1)111 1111 | (1)000 0000 |