快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!

快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方!通过分析 2 的幂次方在二进制表示中的特性 可以快速判断一个数是否为 2 的幂次方

大家好,欢迎来到IT知识分享网。

        将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。

        如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。

       最快速的方法:

      (number & number – 1) == 0

      原因:因为2的N次方换算是二进制为10……0这样的形式(0除外)。与上自己-1的位数,这们得到结果为0。例如。8的二进制为1000;8-1=7,7的二进制为111。两者相与的结果为0。计算如下:
         1000

     & 0111

        ——-

        0000

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139133.html

(0)
上一篇 2025-06-08 14:33
下一篇 2025-06-08 14:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信