5.4 Explain what the following code does: ((n & (n-1)) == 0).

 

这道题让我们解释一个表达式((n & (n-1)) == 0),是说一个数跟比它小1的数字按位相与,结果全是0的情况,那么说明两个数每个位置上至少都有一个0,那么最有可能的情况是连个数的各个位置的数是相反的,而且还要相差1,那么最后可能的情况是一个数的最高位是1,其余位都是0,则其减1即为向最高位借1,其余位均为1,例如: 二进数的10000和1111就相差1,且满足表达式。那么我们知道最高位是1,其余位都是0的二进数就是2的次数。

 

LeetCode上的原题,请参见我之前的博客Power of Two 判断2的次方数

相关文章:

  • 2022-12-23
  • 2021-12-22
  • 2022-12-23
  • 2021-10-12
  • 2022-01-09
  • 2021-05-11
  • 2021-12-31
  • 2022-12-23
猜你喜欢
  • 2022-01-16
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
  • 2022-12-23
  • 2022-01-31
相关资源
相似解决方案