位运算反(~)与(&)异或(^)或(|)右移(>>)左移(<<)

先知道这两个二进制数据的特点:   1=0000 0000 0000 0000 0000 0000 0000 0001 

                                             -1=1000 0000 0000 0000 0000 0000 0000 0001 

            1.最高位(首位)表示正负(0为正,1为负)

            2.最低位(末位)表示奇偶(0为偶,1为奇)

一、按位取反(~)

十进制1按位取反后=?

分析:

1. 十进制1转为二进制为:1= 0000 0000 0000 0000 0000 0000 0000 0001 

2. 按位取反:把原来的二进制得到一个新的二进制,原来是0的则变为1,1的则变为0。

            1按位取反后得到   1111 1111 1111 1111 1111 1111 1111  1110

3.二进制的最高位(首位)表示正负(1为负,0为正),如果是负数,如果是负数,则需要用计算机中的补码来表示。

   补码:补码=符号位(最高位)以后按位取反再加1. 

                        补码为   1000 0000 0000 0000 0000 0000 0000  0010

4. 结果为:把补码转为十进制:  -2;

 ~1==-2

十进制-1按位取反后=?

 1.            -1的二进制是 1000 0000 0000 0000 0000 0000 0000 0001 

 2. 负数是以其补码的形式储存的

       -1在计算机中存的是 1111 1111 1111 1111 1111 1111 1111 1111

3.    按位取反:             0000 0000 0000 0000 0000 0000 0000 0000  

4.结果为:转为十进制:0

~-1==0

二、按位与and(&)

按位与and(&): 相同位的两个数字都为1,则为1;若有一个不为1,则为0。

25&3=>    25= 0000 0000 0000 0000 0000 0000 0001 1001

                 3= 0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

                     0000 0000 0000 0000 0000 0000 0000 0001

25&3==1

三、按位异或(^)

按位异或(^):相同位不同则为1,相同则为0

25^3=>    25= 0000 0000 0000 0000 0000 0000 0001 1001

                 3=  0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

                      0000 0000 0000 0000 0000 0000 0001 1010

25&3==26

四、按位或(|)

按位或(|):相同位只要一个为1即为1。

25|3=>    25=  0000 0000 0000 0000 0000 0000 0001 1001

                 3=  0000 0000 0000 0000 0000 0000 0000 0011

-------------------------------------------------------------------------------------

                      0000 0000 0000 0000 0000 0000 0001 1011

25|3==27

五、右移(>>)

     把1的位置向右移n位,超出的就舍掉

           15=0000 0000 0000 0000 0000 0000 0000 1111

     15>>1=0000 0000 0000 0000 0000 0000 0000 0111

     15>>1=7

     :右移1位即除以21;,并且取整。

      n>>4==n/(24)

      64>>4==4

六、左移(<<)

  把1的位置向左移n位,超出的就舍掉

 :左移1位即乘以21;,并且取整。

      n<<4==n*24

      2<<4==32

原文地址:https://www.cnblogs.com/wei325/p/4994224.html