gpt4 book ai didi

Java 溢出在计算器上计算与 IDE 结果有不同的结果?

转载 作者:行者123 更新时间:2023-11-30 10:00:20 34 4
gpt4 key购买 nike

我不明白我所做的计算哪里出错了,为什么我收到与 IDE 控制台不同的结果。对于我的 ShortTotal,控制台收到 14464println 结果。但是通过在计算器上手动计算,我得到了一个类似的数字,但是 +114465?

我了解 short 类型的最大值和最小值是什么。这是我到目前为止所做的:

因为短的最大值在 32,767 左右。因此,它会以剩余金额再次达到最低限度。所以在计算器上,您可以通过执行以下操作来检查:1000 x (bytevalue+shortvalue + intvalue) = 80000。由于 80,000 大于 short max val,它会溢出余数。 80,000-32767 =47233 然后将此值添加回最小值,即:- 32768 + 47233 = 14465

我设法接近 14464 的值,但不知道为什么我会收到 14465

package com.company;

public class Main {

public static void main(String[] args) {
byte ByteValue = 10;
short ShortValue = 20;
int IntValue = 50;
long LongTotal = 50000 + 10 * (ByteValue + ShortValue + IntValue);
System.out.println(LongTotal);
//The issue in question is below.
short ShortTotal = (short) (1000 * (ByteValue + ShortValue + IntValue));
System.out.println(ShortTotal);
}
}

最佳答案

我不明白你的困惑。

80,000 作为 int 值给出以下位模式:

00000000000000010011100010000000

去掉前两个字节后,您可以得到以下 short 值的位模式:

0011100010000000

换算成十进制,就是:

14464

或者换句话说:一个short可以代表2^16个可能的值:

80000 - (2^16) = 80000 - 65536 = 14464

关于Java 溢出在计算器上计算与 IDE 结果有不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58062140/

34 4 0
文章推荐: java - BadPaddingException:GCM 中的 mac 检查失败
文章推荐: java - 如何避免连续两次生成相同的 2 个随机数
文章推荐: javascript - 使用 jquery 的 forEach 和 templatePlugin 追加
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com