【python】判断一个数是否是2的幂次方
2022/6/22 1:22:26
本文主要是介绍【python】判断一个数是否是2的幂次方,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一个数是否是2的幂次方,比较常用的是递归和移位运算进行判断。
1. 递归算法的思想很简单,就是不断的模上2去判断。
2. 如果一个数是2的幂,那么它的二进制表示中就只有一位1,例如:10000,1000,100等等。所以如果对数字1进行移位操作,总会在移到某个位的时候和这个数相等。这就是移位判断的思想。
def twopower(n): res = 1 while res < n: res = res << 1 if res == n: return True else: return False
3. 因为二进制表示的2的幂次方数中只有一个1,后面跟的是n个0; 因此问题可以转化为判断1后面是否跟了n个0。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与上(&)减去1后的数字,结果为零。
def twopart(n): return n&(n-1) == 0
扩展:
判断是不是4的幂次方?:【参考上面方法2】判断移动的位数是不是偶数(是否%2 == 0)
判断是不是8的幂次方?:判断移动位数会否%3 == 0
这篇关于【python】判断一个数是否是2的幂次方的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门