位和位移运算符
运算符 | 描述 | 例子 |
---|---|---|
& | 如果相对应的位数都是1,则结果为1,否则为0 | (1100&1101) = 1100 |
| | 如果对应的位数有一个是1,则结果是1,否则为0 | (1100&1101) = 1101 |
^ | 如果相对应 位的值相同则取0,否则取1 | (1100&1101) = 0001 |
~ | 按位取反运算符,反转操作数的每一位,即0变成1,1变成0 | ~ 1100 = 0011 |
<< | 按位左移运算符,按照指定的位数左移,不分正负数,低位补0,带符号位移,高位移出,低位补0,移动位数超过该类型的最大位数,则进行取模,如对Integer型左移34位,实际上只移动了两位。左移一位相当于乘以2的一次方,左移n位相当于乘以2的n次方。 | 1100 << 1 = 1000 |
>> | 按位右移运算符。按照指定的位数右移并以符号位填空 ,如果该数为正,则高位补0,若为负数,则高位补1;带符号右移 | 1100 >>1 = 1110 |
>>> | 按位右移补0操作,按照指定的位数右移并以零填空位,无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0;不带符号右移 | 1100 >>> 1 = 0110 |