zoukankan      html  css  js  c++  java
  • 位运算

    操作数:3--> 0000 0011 --> 1*2^1+1*2^0=3
    操作数:5--> 0000 0101 --> 1*2^2+0*2^1+1*2^0=5

    (1)取反(~):只对一个操作数进行运算,将操作数二进制中的 1 改为 0,0 改为 1。
    3       0 0 0 0 0 0 1 1
    —————————
    ~      1 1 1 1 1 1 0 0

     

    (2)按位与(&):参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位同时为 1,那么计算结果才为 1,否则为 0。因此,任何数与 0 进行按位与运算,其结果都为 0。
    3      0 0 0 0 0 0 1 1
    5      0 0 0 0 0 1 0 1
    —————————
    &     0 0 0 0 0 0 0 1

     

    (3)按位或(|):参与运算的数字,低位对齐,高位不足的补零。如果对应的二进制位只要有一个为 1,那么结果就为 1;如果对应的二进制位都为 0,结果才为 0。
    3      0 0 0 0 0 0 1 1
    5      0 0 0 0 0 1 0 1
    —————————
    |       0 0 0 0 0 1 1 1

     

    (4)按位异或(^):参与运算的数字,低位对齐,高位不足的补零,如果对应的二进制位相同(同时为 0 或同时为 1)时,结果为 0;如果对应的二进制位不相同,结果则为 1。
    3      0 0 0 0 0 0 1 1
    5      0 0 0 0 0 1 0 1
    —————————
    ^      0 0 0 0 0 1 1 0


    (5)左移(<<):按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
            0 0 0 0 0 0 1 1
    —————————
    <<   0 0 0 0 0 1 1 0
    向左移一位,相当于乘以2;向左移两位,相当于乘以4;

     

    (6)右移(>>):按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。
            0 0 0 0 0 0 1 1
    —————————
    >>   0 0 0 0 0 0 0 1
    向右移一位,相当于除以2;向右移两位,相当于除以4

    —转载请注明出处
  • 相关阅读:
    保留最大的数
    彩色宝石项链
    [leetcode] 403. Frog Jump
    [leetcode] 402. Remove K Digits
    Linux 更改时区、时间
    Linux系统时间同步方法
    mysql 5.7.28 地理位置计算详解
    springboot微服务项目集成为单体
    地理空间数据Geometry在MySQL中使用(一)
    mysql中geometry类型的简单使用
  • 原文地址:https://www.cnblogs.com/landiss/p/14326882.html
Copyright © 2011-2022 走看看