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

    所谓位运算是指进行二进制位的运算。C语言提供了如下的位运算符:

    运算符

    含 义

    举 例

    &

    按位与

    a&b,a和b中各位按位进行“与”运算

    |

    按位或

    a|b,a和b中各位按位进行“或”运算

    ^

    按位异或

    a^b,a和b中各位按位进行“异或”运算

    ~

    取反

    ~a,a中各位按位进行“取反”运算

    <<

    左移

    a<<n,a中各位全部左移n位

    >>

    右移

    a>>n,a中各位全部右移n位

    1.1.1 按位与运算符

    基本格式:a&b

    基本规则:0&0 = 0 0&1 = 0 1&0 = 0 1&1 = 1 (即,只有1&1为1,其他为0)

    作用:

    将某些位清零:想要清除哪一位,就与上对应的那一位为0.

    eg: 00101011想要清除低3位,则&上11111000. 变成00101000

    取指定位:想要取哪一位,就与上对应那一位为1.

    eg:00101011想要取出低3为,则&上00000111. 变成00000011

    1.1.2 按位或运算符

    基本格式:a|b

    基本规则:0|0 = 0 0|1 = 1 1|0 = 1 1|1 = 1 (即,只有0|0为0,其他为1)

    作用:

    设定某些位为1:想要设置哪一位为1,就或上对应的那一位为1.

    eg:00101011想要将第4位设置为1,则|上00010000,变成00111011

    1.1.3 异或运算符

    基本格式:a^b

    基本规则:0^0 = 0 0^1 = 1 1^0 = 1 1^1 = 0 (即“相同为0,相异为1”)

    作用:

    使特定位翻转:想要将哪些位翻转,就异或上对应的哪些位为1.

    eg:00101011想要将低4位翻转,则^上00001111,变成00100100

    和0相异或,保留原值

    eg:00101011^00000000,还是00101011

    1.1.4 取反运算符

    基本格式:~a

    基本规则:~0 = 1 ~1 = 0

    作用:

    结合&可以将一个数的指定位清0.

    eg:a=00101011,如果a&=~1,则将a的最低位清0

    一个数a按位取反之后的值为a的相反数-1

    1.1.5 左移运算符

    基本格式:a << n (n为整数)

    基本规则:将一个数的各二进制位全部左移若干位。(左丢弃,右补0)

    举例:x=01010001,x << 2,则x=01000100

    作用:

    在左移时被溢出舍弃的高位中不包含1的情况时,左移一位相当于该数乘以2。依此类推

    1.1.6 右移运算符

    基本格式:a >> n (n为整数)

    基本规则:将一个数的各二进制位全部右移若干位。(正数左补0,负数左补1,右丢弃)

    举例: x=00101111,x >> 2,则x=00001011

    x=10110010,x >> 2,则x=11101100

    作用:

    在右移时被溢出舍弃的低位中不包含1的情况时,右移一位相当于该数除以2。依次类推

  • 相关阅读:
    Activity的启动模式
    Assets和Raw区别
    手机自动跑脚本
    系统隐式 Intent
    判断是否为小屏幕设备
    C语言数组初始化方式
    windows10环境下gcc环境变量的配置
    UE4.22编辑器界面操控设置(4)
    windows10下JDK9的环境配置
    分布式ID生成解决方案之snowflake(雪花算法)
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2758046.html
Copyright © 2011-2022 走看看