位运算符的基本使用和注意事项
位运算符 |
||
运算符 |
运算 |
范例 |
<< |
左移 |
3 << 2 = 12 --> 3*2*2=12 |
>> |
右移 |
3 >> 1 = 1 --> 3/2=1 |
>>> |
无符号右移 |
3 >>> 1 = 1 --> 3/2=1 |
& |
与运算 |
6 & 3 = 2 |
| |
或运算 |
6 | 3 = 7 |
^ |
异或运算 |
6 ^ 3 = 5 |
~ |
反码 |
~6 = -7 |
左移(<<)、右移(>>)和无符号右移(>>>),符号左侧是要进行操作(移位)的数,要进行移位运算,首先要将十进制数变成二进制补码(在原码的基础上按位取反后加一即可得到补码); 符号右侧的数代表要移动的位数,每移动一位相当于乘除2(右移相当于除2,左移相当于乘2),无符号右移和左移右移的区别在于无符号忽略了正负即操作完无论正负都变成正数。
与运算符(&):它的运算规则是 有0则0;&作为位运算符时的运算给则和作为逻辑运算符时规则有相似的地方,那就是如果把0看做是假,1看做是真,那么只有都是真(都是1)的时候,才是1。
或运算符(|):它的运算规则是 有1则1;|作为位运算符时的运算给则和作为逻辑运算符时规则有相似的地方,那就是如果把0看做是假,1看做是真,那么只要存在一个真(存在一个1)的时候就是真(1)。注意:我之前错误的认为或运算是加法运算(运算时把两个二进制补码加载一起),结果错的一塌糊涂。所以才写了这片补课,作为查缺补漏。
异或运算符(^):它的运算规则 相同则0不同则1;
反码(~):运算规则 按位取反;