按位运算与移位运算

按位与移位的学习只是要知道底层是怎么工作的,日常很少用到

按位运算

  1. 按位与&: 1&1=1, 其他都是0
    • 应用:让某一位或某些位位0: x & 0xFE
      • 取一个数的某一段: x & 0xFF
  2. 按位或 | ; 1 | 0=1, 1 | 1=1, 0 | 0=0
    • 应用:使某位为1;
      • 拼数:0xFF00 | 0x00FF
  3. 按位取反~:1->0, 0->1
    • 得到全部为1的数: ~0
    • 7的二进制为0111, x | 7使低3位为1;
    • x & ~7, 则使低3位为0
  4. 按位异或^: 相同为0, 不同为1;
    • x^y ^y ==> x
    • x=y ,x^y=0

移位运算

左移i << j

  • i 中所有的为向左移动 j 个位置,右边填0;
  • 所有小于int 的类型,移位以int的方式来做,结果是int
  • x <<= 1 等价 x *= 2
  • x <<= n 等价 x *= 2^n

右移i << j

  • i 中所有的为向右移动 j 个位置,
  • 所有小于int 的类型,移位以int的方式来做,结果是int
  • 对与unsigned的类型,左边填入0
  • 而signed的类型,左边填入原来的最高位
  • x <<= 1 等价 x /= 2
  • x <<= n 等价 x /= 2^n

移位不能用负数

作者

manu

发布于

2020-02-24

更新于

2023-01-06

许可协议


:D 一言句子获取中...