判断一个数字n是不是2的幂次方

本文探讨了如何更简便地判断数字n是否为2的幂次方,通过介绍一种非典型但高效的代码实现方式,强调在解决问题时多角度思考和代码优化的重要性,以提升编程技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

据上一篇求二进制中1的个数的思路拓展:如何判断数字n是否为2的幂次方?

2的幂次方有一个特点,仅有一个1,大家很容易想到使用n&(n-1)去判断count是不是1就可以了

但这还是太麻烦!请看以下代码

int main()
{
    int n = 0;
	scanf("%d", &n);
	//公式n&(n-1)都会去掉最右边的1,只有一个1的情况下,只要&上一次看是否变为0即可
	if ((n & (n - 1)) == 0)
	{
		printf("%d是2的幂次方\n", n);
	}
	return 0;
}

总结:

相同的问题,总能写出不一样的代码来解决,日常思考问题也应该多想几种解法,去挑战代码优化。这非常有利于改进代码思维,我们大多数时候只能重复运用已经学会的知识,而不能快速找到创新的想法,所以要多看看其他人写的好代码,我们才能从中汲取养分提升自己的代码水平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值