原码
- 十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
- 利用原码对正数进行计算是不会有问题的
- 但是如果是负数计算,结果就出错,实际运算的结果,跟我们预期的结果是相反的
反码
- 为了解决原码不能计算负数的问题而出现的
- 计算规则:正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0
- 反码弊端:负数运算的时候,如果结果不跨0,是没有任何问题的,但是如果结果跨0,跟实际结果会有1的偏差。因为0的反码有两种写法
补码
- 为了解决负数计算时跨0的问题而出现的
- 计算规则:正数的补码不变,负数的补码在反码的基础上+1;
- 另外补码还能多记录一个特殊的值-128,该数据在1个字节下,没有原码和反码
- 计算机中的存储和计算都是以补码的形式进行的
其他运算符计算
运算符 | 含义 | 运算规则 |
---|---|---|
& | 逻辑与 | 0为false,1为true;两个1才为1 |
| | 逻辑或 | 0为false,1为true;有1就为1 |
<< | 左移 | 向左移动,低位补0;左移1位为*2 |
>> | 右移 | 向右移动,高位补0或1;原来数为正高位补0,为负高位补1 |
>>> | 无符号右移 | 向右移动,高位补0;忽视符号 |