基本的位运算的运用

  • a <<= 1 equals to a = 2a

Number of 1 Bits

  • 掌握检查每个bit是否为1的技巧
    • 运用mask,进行与运算,如果AND的结果为1,那么证明与mask的1在同一位置的bit为1
    • 然后在把mask向左位移一位
  • 另一个办法,通过不断的把最低位的1变成0,直至最终数为0,得到1的个数
    • 这里需要借助一个trick n &= (n-1) 能够把最低位的1变成0
  • 方法三把数字不断向右移动: for (int i=0;i<32;i++) count += (num >> i) & 1;

results matching ""

    No results matching ""