当前位置: 首页 > article >正文

2的幂次方

2的幂次方

判断一个数是否为2的幂次方?

我们可以参考如下链接:
判断一个数是否为2的N次方

借鉴文中的分析,我认为:
其实一个数n,如果是2的幂次方数,则n的二进制原码中一定只有一个1,且在最高位;而n-1的二进制原码中一定只有一个0,也在最高位,那么n&(n-1)==0
反之,如果n&(n-1)的结果是0,无法推出n2的幂次方。例如n等于1n-1等于0n&(n-1)的结果是0,但是n不是2的幂次方。
但是,n的二进制原码中只有一个1,且在最高位,可以推出n2的幂次方。

所以我们的结论是:
n2的幂次方 ← → ←→ ←→ n的二进制原码中只有一个1,且在最高位

求解不大于数n的最大的2的幂次方?

同理,我们只需要找到n的二进制原码中1的最左位置,将其余位置0即可。如下为python实现代码:

	seed_length = 8963
	bin_sl = bin(seed_length)
	neurons = pow(2, len(bin_sl)-3)

其中,neurons为不大于seed_length2的幂次方的上界。8963转换为二进制原码为0b1111001101100,即代码中的bin_sl,其数据类型为<class 'str'>0b标识着二进制字符串,不大于seed_length2的幂次方的上界即为0b1000000000000。由于二进制原码没有前置0,最高位必为1,所以我们直接获取二进制字符串长度,之后求解2len(bin_sl)-3次方即可。


http://www.kler.cn/a/16216.html

相关文章:

  • 深度解析:Android APP集成与拉起微信小程序开发全攻略
  • 低代码牵手 AI 接口:开启智能化开发新征程
  • StarRocks Summit Asia 2024 全部议程公布!
  • Java:解决因为大小写不规范导致的接收不到数据
  • 简易入手《SOM神经网络》的本质与原理
  • FluentUI使用
  • 微软开源AI修图工具让老照片重现生机
  • Java版本电子招标采购系统源代码—企业战略布局下的采购寻源
  • 网络安全漏洞分析之远程代码执行
  • 长/短 链接/轮询 和websocket
  • python深度强化学习模型的原理、应用!
  • Java 中的包是什么?如何创建和使用包?(八)
  • 第11章 项目人力资源管理
  • HTTP基础知识
  • 【博弈论】【第一章】博弈论导论
  • 跟着杰哥学强化学习:q-learning的一些思考
  • 有仰拍相机和俯拍相机时,俯拍相机中心和吸嘴中心的标定
  • 研究生,但是一直摆烂——想办法解决
  • 数据治理在学术上的发展史以及未来展望
  • 一天吃透Redis面试八股文
  • 【华为OD机试真题】最大N个数与最小N个数的和(C++javapython)100%通过率 超详细代码注释 代码解读
  • 基于AI技术的智能考试系统设计与实现(论文+源码)_kaic
  • Oracle删除列操作:逻辑删除和物理删除
  • 【Linux - Shell常用命令】- 判断文件是否存在、去掉文件后缀
  • [java]云HIS:检验字典维护
  • No.054<软考>《(高项)备考大全》【冲刺8】《软考之 119个工具 (6)》