位和位移运算符

运算符 描述 例子
& 如果相对应的位数都是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