位运算因为是直接二进制位操作,所以运行很快,在一些jdk源码里面看得见,一般开发web用不到,现在我们来讨论下位运算
以下为了方便显示,使用 八位二进制表示
说明一下:
负数在计算机中的存在形式
以补码的形式存在
负数转二进制:
1.写出x的绝对值的二进制值
2.对这个二进制值取反
3.对取反后的数加1
1. ~ 按位取反(单目运算符)
概念:操作一个二进制数,是1就变成0,0就变成1
例:~10 => ~00001010 => 11110101 => -11
二进制表示的最高位表示正负,1是负,0是正,11110101 转十进制就是 -1 然后取反加负号,就是 11110100 取反,就是 -00001011 就是 - 11
2. ^ 按位异或(双目运算符)
概念:操作两个二进制数,相同的位相异就是1,相同就是0
例: 10^5 => 00001010 ^ 00000101 = > 000001111 =>15
3. & 按位与(双目运算符)
概念:操作两个二进制数,相同的位只要有一个是0,那么该位运算后的结果就是0
例:10&5 =>00001010 & 00000101 => 00000000 => 0
4. | 按位或(双目运算符)
概念:操作两个二进制数,相同的位只要有一个是1,那么该位就是1
例:10|5 => 00