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


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

    先知道这两个二进制数据的特点:   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

  • 相关阅读:
    创业公司的经济适用架构师
    软件工程–从嗤之以鼻到视若法宝
    阿里云CDN+OSS完成图片加速
    听说你在为天天写业务代码而烦恼?
    从实践者的角度看软件架构的历史
    KVM虚拟化技术
    网络基础和 TCP、IP 协议
    分布式应用程序协调服务 ZooKeeper
    python 装饰器
    python 柯里化**
  • 原文地址:https://www.cnblogs.com/sexintercourse/p/16538232.html
Copyright © 2020-2023  润新知