lsmCC 发表于 2023-11-23 14:22:10

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

具体用法是什么呢,比如判断是否为3的指数倍

FishC_GPT 发表于 2023-11-23 14:22:35

表达式 i & (i-1) 可以用来判断一个数是否为2的指数。如果结果为0,则说明i是2的指数,否则不是。

要判断一个数是否为3的指数倍,可以使用如下代码:

def is_multiple_of_three(num):
    if num <= 0:
      return False
   
    while num % 3 == 0:
      num /= 3
   
    return num == 1

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

你也可以使用递归方式实现:

def is_multiple_of_three(num):
    if num <= 0:
      return False
   
    if num == 1:
      return True
   
    if num % 3 != 0:
      return False
   
    return is_multiple_of_three(num / 3)

这两种方法都可以判断一个数是否是3的指数倍。
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: i&(i-1)是判断是否为2的指数