当前位置: 首页 > 面试题库 >

查找没有数学函数或对数函数的数字是否为2的幂

司空温书
2023-03-14
问题内容

我想查找用户输入的数字是否为2的幂。

我的代码不起作用。

public class power_of_two
{  
    public static void main(String args[])  
    {

        Scanner in=new Scanner(System.in);
        System.out.println("Enter the number : ");
        int num = in.nextInt();

        int other = 1;  
        if(((~num) & 1) == 1)  
        {  
            System.out.println("The number is a power of two");  
        }  
        else  
        {
            System.out.println("The number is a  NOT A power of two");  
        }
    }  
}

让我知道如何找到两个数的幂。
例如8是2的幂
。22 不是 2的幂,依此类推。


问题答案:

您可以使用以下方法测试正整数n是否为2的幂

(n & (n - 1)) == 0

如果n可以是非正数(即负数或零),则应使用

(n > 0) && ((n & (n - 1)) == 0)

如果n确实是2的幂,那么在二进制中它将看起来像:

10000000...

所以n - 1看起来像

01111111...

当我们按位进行“与”运算时:

  10000000...
& 01111111...
  -----------
  00000000...

现在,如果n 不是 2的幂,那么它的二进制表示形式除了前导1外还有其他1,这意味着两个nn - 1都具有相同的前导1位(因为减去1可能无法关闭该位二进制表示中的另一个地方有1)。因此,如果不是2的幂,该&操作将不会产生,因为将和的两个前导位都将自身产生。当然,这是肯定的。0``n``&``n``n - 1``1``n

Wikipedia上的“用于检查正数是否为2的幂的快速算法”中也对此进行了说明。

快速健全性检查:

for (int i = 1; i <= 100; i++) {
    if ((i & (i - 1)) == 0)
        System.out.println(i);
}



1个
2
4
8
16
32
64


 类似资料:
  • 该章节函数包括三角函数及 π 值获取的函数等。 6.1 acos 函数 函数作用:计算反余弦(余弦的倒数)函数。 返回以弧度为单位的数字,例如 0 到 π 之间的数字。 参数:number 从[-1,1]间隔开始的浮点数。 返回值: number 语法: acos(number) => value 输入代码 .animation { rotate: acos(0.540302305868139

  • 问题内容: 我有一个由基本数学函数(abs,cosh,sinh,exp,…)组合定义的函数。 我不知道是否有差别(速度)来使用,例如, 而不是? 问题答案: 计时结果如下: 比它还处理Numpy数组要慢:它包含提供这种灵活性的其他代码。 但是,Numpy在数组 上的 速度很快: (PS:在python 2.7中比慢于慢,后者快约30%,但仍然比NumPy慢得多。) 因此,对于1000个元素而言,花

  • 问题内容: 我正在尝试制作一个程序来检查单词是否是回文,并且到目前为止,它可以与具有偶数个数字的单词一起使用。我知道如果字母的数量为奇数时如何使它起作用,但是我只是不知道如何确定数字是否为奇数。有什么简单的方法可以找到数字是奇数还是偶数? 仅供参考,这是我的代码: 谢谢 问题答案: if num % 2 == 0: pass # Even else: pass # Odd 该符号就像除法一样,仅检

  • 问题内容: 我正在尝试查看int是否具有相同数字的倍数。尝试不使用字符串方法或数组。我遇到的主要方法是。当重复数字位于末尾时有效,但当它们位于开始或中间时无效。 } 如果运行此命令,您将看到‘2’重复出现,但该方法仍会评估其应为的时间。 问题答案: 这是一个简短而甜蜜的版本:) 它的工作方式非常简单。是一个整数,用于存储已经遇到的数字(由于十进制系统编号只有10位,而整数给出16位,因此我们有足够

  • 检查给定的参数是否是一个函数。 使用 typeof 来检查一个值是否为一个函数。 const isFunction = val => typeof val === 'function'; isFunction('x'); // false isFunction(x => x); // true

  • 问题内容: 我知道,在Python中通常不赞成使用类型检查函数参数,但我认为这样做很有意义。 在我的项目中,我有一个抽象基类和一个子类,该子类具有更多功能,例如旋转,幅度变化等。数字的列表和元组也将返回True,因为我也有许多接受这些Coord类型作为参数的函数和方法。 。我已经设置了装饰器来检查这些方法的参数。这是一个简化的版本: 这个版本非常简单,仍然有一些错误。只是为了说明这一点。它的用法如