目录
原码
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
可见如果一个反码表示的是负数, 通常要将其转换成原码再计算.
补码
正数的补码是其本身
负数的补码是在反码的基础上+1
对于负数,通常也需要转换成原码在计算其数值.
char | 16位2个字节 |
shot | 16位2个字节 |
byte | 8位1个字节 |
int | 32位4个字节 |
long | 64位8个字节 |
float | 32位4个字节 |
double | 64位8个字节 |
& 按位与
1 & 3的结果为1
来看看它的怎么运行的:
1的二进制表示为 0 0 0 0 0 0 1
3的二进制表示为 0 0 0 0 0 1 1
根据 & 的规则 得到的结果为 0 0 0 0 0 0 0 1,十进制表示就是1
只要任何一位是0 &运算的结果就是 0
| 运算符
| 跟 & 的区别在于 如果对应的位中任一个操作数为1 那么结果就是1
^ 运算符
^运算符跟 | 类似,但有一点不同的是 如果两个操作位都为1的话,结果产生0
0 1 0 0 0 0 0 1
0 1 0 1 1 0 1 0
产生 0 0 0 1 1 0 1 1
~ 运算符
~是对位求反 1变0, 0变1
>>运算符 、<<运算符
<< 向左移动 和 >> 向右移动,超过的位将丢失,而空出的位则补0