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。依次类推

  • 相关阅读:
    [SQL Server]分页功能的实现
    [Others]每个文件夹都具有的特殊文件夹
    [ASP.NET]使页面的大小适合打印尺寸
    [SQL Server]树形结构的创建
    [ASP.NET]获取用户控件对象的引用
    [SQL Server]关于15517号错误的一点想法
    [SQL Server]创建自定义聚合函数值得注意的问题
    Java开源BI商业智能工具
    电子商务网站搜索架构方案
    产品经理如何培养对市场的敏感度和洞察力?
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2758046.html
Copyright © 2011-2022 走看看