Java中的位运算规则
1.数据在内存中的存储形式
数据是以二进制的形式存储在计算机中的,但是在数据被读取到内存中后会以补码的形式存在。为什么要取补码?这是因为计算机中只有加法运算,为了计算减法,也就是加上一个负数,补码诞生了。正数的补码是他本身,在二进制下负数的补码为原码(不包括符号位)的反码再加一。不明白的可以做个参考[https://wenwen.sogou.com/z/q831561856.htm] 下面来个实际的例子。
int btye1 = 6; //int在内存中占4个字节,也就是32位
int byte2 = -3;
int byte2 = -6;
十进制数据 | 二进制源码 | 反码 | 补码 |
---|---|---|---|
6 | 00000000 00000000 00000000 00000110 | 00000000 00000000 00000000 00000110 | 00000000 00000000 00000000 00000110 |
-3 | 10000000 00000000 00000000 00000011 | 11111111 11111111 11111111 11111100 | 11111111 11111111 11111111 11111101 |
-6 | 10000000 00000000 00000000 00000110 | 11111111 11111111 11111111 11111001 | 11111111 11111111 11111111 111110 |