C语言(CED)判断一个数是否是2的整数幂的简便方法!

正如大家所熟知的那样,我们输入到计算机中的数据,都是以二进制的格式保存处理的,所以此方法就是利用这一特点来进行判别!(除2的零次方)

将2的整数幂次方转换为二进制后,仔细观察后会很容易发现一个特点:整串数字中只有一个1,在其后跟了多个0.

比如:

2:10;

4:100;

8:1000;

      ·

      ·

      ·

128:10000000

所以我们只要判断1后面是否跟了若干个0就可以了。

那么我们又会发现:这个数减去1的差,原来的那个“1”变为“0”,那n个“0”变为了“1”;紧接着将原来的数和减去1后的数进行“与”运算后会发现最终结果一定是“0”。

所以转换为代码:
  

(number & number - 1) == 0
发布了62 篇原创文章 · 获赞 93 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/GenuineMonster/article/details/83117951
今日推荐