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

浅谈:运用幂的性质

一般来说,在对数字做因式分解时,分解到质数便不可再分,而质数的幂等于多个质数相乘,所以质数的幂只有质数这一个质因子。

应用:326. 3的幂

那么我们顺便来看一下 4 的幂这一题,先列举几个 4 的幂看一下规律:

1  0000001
4  0000100
16 0010000
64 1000000

可以看出:4 的幂的二进制表示为 1 后面接偶数个 0,即:4 的幂在计算机中的二进制表示只有一个 1,且数字 1在奇数位置上。

怎么表示这一种关系呢?我们可以在 2 的幂基础上考虑,首先4的幂肯定也必须满足 2 的幂条件,即:n and n - 1 == 0,除此之外,我们需要筛选出 2 的幂中,1 在奇数位置上的数字。

考虑一下:二进制中,00100100有什么区别?

由于0100的奇数位置有 1,0010的奇数位置没有 1。如果有一个数字的奇数位为 1,如0100,将它与00100100与运算,奇数位置没有 1 的0010将变成 0,奇数位置有 1 的0100不变。这个区别就可以作为切入点。

我们用一个奇数位全为 1 的数字,01010101010101010101010101010101,与 2 的幂做与运算。结果不等于 0 的就是奇数位置有 1 的数字。用 16进制表示01010101010101010101010101010101,即 0x55555555,所以我们有如下代码:

fun isPowerOfFour(n: Int): Boolean {return n > 0 && n and n - 1 == 0 && (n and 0x55555555 != 0)
}

当然,我们也可以用偶数位全为 1 的数字,10101010101010101010101010101010,与 2 的幂做与运算,结果等于 0 的就是奇数位置有 1 的数字,用 16 进制表示10101010101010101010101010101010,即 0xAAAAAAAA,代码如下:

fun isPowerOfFour(n: Int): Boolean {return n > 0 && n and n - 1 == 0 && (n and 0xAAAAAAAA.toInt() == 0)
}
http://www.dtcms.com/a/350852.html

相关文章:

  • 程序的“烽火台”:信号的产生与传递
  • 【基础-单选】使用http发起网络请求,需要以下哪种权限?
  • C6.2:小信号、交流电流增益分析
  • 立轴式小型混凝土搅拌机的设计含14张CAD
  • 客户生命周期价值帮助HelloFresh优化其营销支出
  • 快速了解工业相机中的连续采集、软触发、硬触发和同步触发以及PTP同步触发
  • Spring介绍
  • Linux iptables 防火墙
  • Linux网络编程基础API
  • [灵动微电子六步换向(方波控制)方案MM32BIN560C] 六步换向实现和规律
  • PostgreSQL诊断系列(2/6):锁问题排查全攻略——揪出“阻塞元凶”
  • RK3568 Linux驱动学习——pinctrl和gpio子系统
  • onnx入门教程(四)——ONNX 模型的修改与调试
  • Day24: NumPy 奥德赛:用科学计算的魔法征服数据宇宙!
  • 32.Ansible平台搭建
  • 2024年09月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • NFC线圈设计计算
  • 力扣热题——前K个高频元素
  • 记一次Arrays.asList集合删除的错误
  • Java vs Kotlin 在实际开发中的主要区别与面试题总结
  • 太阳光模拟器在国防军工中的应用
  • k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
  • K8s Pod驱逐机制详解与实战
  • SpringBoot防重放攻击的5种实现方案
  • 什么是数据库?现代数据库类型、示例与应用(2025)
  • 深入理解 iptables:Linux 防火墙从入门到精通
  • Vue3使用 DAG 图(AntV X6)
  • 2024年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • Spring Boot 3.5 新特性
  • C++ namespace