n的二进制表示中第k位数字是几

  1. 先把第k位数字移到最后一位 n>>k
  2. 看个位是几 x&1

    除以2相当于二进制数右移1位

  3. 即右移1位相当于除以2,相当于除去二进制数中的下一位

    按位与操作:

  4. 相当于取出某一位
  5. int a = 1010
  6. a & 1 = 0
  7. a & 11 = 2 (10的二进制表示为2)

lowbit操作

  1. lowbit(x)是返回x的最后一位1
  2. 相当于x&-x=x&(~x+1)