c++位运算

来源:互联网 发布:去除淘宝店铺模块缝隙 编辑:程序博客网 时间:2024/06/08 14:36

水一发这个

  • ~ 取反 把每一位反过来
    ~0101 -> 1010

  • ^ 异或 两个二进制数 把他们上下对齐排好 如果同一列的值相等 那么相应列的值就是0 否则的
    话就是1 结果最后仍旧转换成二进制数
    19 ^ 10 -> 25

  • & 当两个数的第i个二进制位都是1的时候 答案的第i个二进制位就是1 否则是0
    1 & 3 -> 1

  • | 当两个数随便一个二进制位是1的时候答案就是1
    1 | 3 -> 3

  • << >> 左移右移 左移i就是乘2的i次方 右移i就是除2的i次方
    1 << 1 -> 2
    2 >> 1 -> 1

COYG