<< 左移 其实就是乘以2的移动位数次幂
3 << 2 = 12 ‐‐> 3*2*2=12
0000-0000 0000-0000 0000-0000 0000-0011
向左移动两位,移动后往后面补上两个0,结果为0000-0000 0000-0000 0000-0000 0000-1100------>12,越移越大
>> 右移 其实就是除以2的移动位数次幂
3 >> 1 = 1 ‐‐> 3/2=1
0000-0000 0000-0000 0000-0000 0000-0011
向右移动一位,移动后往前面补上一个0(如果最高位是1,就拿1补),结果为0000-0000 0000-0000 0000-0000 0000-0001------->1,越移越小
>>> 无符号右移
3 >>> 1 = 1 ‐‐> 3/2=1
无论最高位是什么都拿0补。
& 与运算
6 & 3 = 2
110
&011
---------
010 = 2
(运算规律:把0当做是假,把1当做是真)
| 或运算
6 | 3 = 7
110
|011
-----------
111 = 7
^ 异或运算
6 ^ 3 = 5
110
^011
----------
101 = 5
~ 反码 ~6 = ‐7
注:位运算是直接对二进制进行运算。
最有效的运算出2*8等于几---------->2<<3
原文地址:http://www.cnblogs.com/LO-ME/p/3530543.html