首页 > 代码库 > 位运算符

位运算符

<< 左移  其实就是乘以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