鱼C论坛

 找回密码
 立即注册
查看: 809|回复: 1

i&(i-1)是判断是否为2的指数

[复制链接]
发表于 2023-11-23 14:22:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
具体用法是什么呢,比如判断是否为3的指数倍
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-23 14:22:35 | 显示全部楼层
表达式 i & (i-1) 可以用来判断一个数是否为2的指数。如果结果为0,则说明i是2的指数,否则不是。

要判断一个数是否为3的指数倍,可以使用如下代码:
  1. def is_multiple_of_three(num):
  2.     if num <= 0:
  3.         return False
  4.    
  5.     while num % 3 == 0:
  6.         num /= 3
  7.    
  8.     return num == 1
复制代码

这段代码会不断地将num除以3,直到num不能整除为止。如果最终num等于1,则说明原数是3的指数倍。

你也可以使用递归方式实现:
  1. def is_multiple_of_three(num):
  2.     if num <= 0:
  3.         return False
  4.    
  5.     if num == 1:
  6.         return True
  7.    
  8.     if num % 3 != 0:
  9.         return False
  10.    
  11.     return is_multiple_of_three(num / 3)
复制代码

这两种方法都可以判断一个数是否是3的指数倍。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-7 20:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表