首页 > 其他 > 详细

幂运算

时间:2021-05-31 22:03:45      阅读:29      评论:0      收藏:0      [点我收藏+]

(一)2 的幂

  • 若 n = 2^x且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:
    1. 恒有 n & (n - 1) == 0,这是因为:一定满足 n > 0。
      • nn 二进制最高位为 1,其余所有位为 0
      • n - 1n?1 二进制最高位为 0,其余所有位为 1

  因此可以根据 n > 0 && (n & (n -1) == 0)来判断

 

(二)4 的幂

  • 如果一个数是4的幂,那也一定是2的幂。
  • 如果 n 是 4的幂,那么 n 的二进制表示中有且仅有一个 1,并且这个 1 出现在从低位开始的第偶数个二进制位上(这是因为这个 1 后面必须有偶数个 0)。

  因此我们可以构造一个整数 m,它的所有偶数二进制位都是 0,所有奇数二进制位都是 1

  这样一来,我们将 n 和 m 进行按位与运算,如果结果为 0,说明 n二进制表示中的 1 出现在偶数的位置,否则说明其出现在奇数的位置。

  m 也可以写成十六进制的0xaaaaaaaa

幂运算

原文:https://www.cnblogs.com/averyfork/p/14833064.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!