当前位置: 首页 > 知识库问答 >
问题:

Java指数误差为2^31次方[重复]

仲孙子辰
2023-03-14
class PrintPowersOf2 {
    public static void main (String[] args) {
        printPowersOf2(10);
        printPowersOf2(5);
        printPowersOf2(2);
        printPowersOf2(-5);
        printPowersOf2(30);
        printPowersOf2(32);
    }

    public static void printPowersOf2 (int x) {
        for(int i=0;i<x+1;i++) {
            int y = exponent (i);
            System.out.print(y);
            if(!(i == x)) {
                System.out.print(" ");
            }
        }
        System.out.println();
    }

    static int exponent(int power) {
        int output = 1; 
        for (int z=0; z<power; z++) 
        output *= 2; 
        return output; 
    }
}
1 2 4 8 16 32 64 128 256 512 1024
1 2 4 8 16 32
1 2 4

1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 1073741824

1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 1073741824 -2147483648 0

共有1个答案

楚望
2023-03-14

int用32位表示。因此,可以表示-2^312^31-1之间的任何值。没有超出这个范围的。

您可以使用long(64位)或biginteger(datastructures,可以表示内存限制内的所有数字)。

使用这些结构(尤其是BigInteger)的缺点是,CPU并不总是提供算术指令。因此,添加两个BigInteger实例需要比使用intlong更多的时间。在的情况下,如果CPU是32位的,则至少需要两条指令来处理它。

long value = 0x01L << power;//power of two, all in one simple instruction.
  0001 1011 << 2
= 0110 1100
 类似资料:
  • 问题内容: 我正在编写一个Java程序来输出2的指数幂(顺便说一句,我不能使用),但是在2 ^ 31和2 ^ 32处我得到了其他东西。另外,我不打算接受负整数。 我的代码: 我得到的输出是: 问题答案: An 用32位表示。因此,可以表示和之间的任何值。没有什么超出这个范围。 您可以使用(64位)或(可以表示直到内存限制的所有数字的数据结构)。 使用这些结构的缺点(尤其是)是CPU并不总是提供算术

  • 我需要以这样的方式使用两个循环:外循环驱动内循环进行2、4、8、16和32次迭代的计算。 例如,如果i=2(对于外循环),则内循环将迭代4次 如果i=3,则内部循环将迭代8次,依此类推。 这就是我使用的逻辑 如果有任何建议,我将不胜感激

  • 错误:C:\用户\Aidan\Anaconda3\lib\site-包\sepy\优化\minpack.py:794: OptimizeWarning:参数的协方差无法估计 类别=OptimizeWarning) ---------------------------------------------------------------------------()14 plt中的TypeErro

  • 对朱莉娅来说是新来的,所以这可能很容易。 我有一个n×m的数组和一个长度为n的向量,我想在向量的对应元素中重复数组的每一行的次数。例如: 结果应该是6乘6的数组。我尝试了功能,但是 生成一个数组,因此需要作为重复元素的维度。在matlab中,我会使用,我希望julia提供类似的东西。我的实际矩阵要大得多,我需要多次调用该函数,所以这个操作需要尽可能快。

  • 在编程时,我注意到math.exp(2)和math.e**2的结果之间存在差异。如下所示,在计算e^1时不会出现这种差异。 我不是一个有经验的程序员,我想知道为什么这不一样?我想这和围捕有关。python文档说返回,但这似乎并不完全正确。那么为什么操作与不同呢?

  • 你能解释一下第一行最后一个false输出,为什么它不是真的吗?