gpt4 book ai didi

java - java 中的原始数据类型转换 - 内部逻辑

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

伙计们,我想了解,加宽或缩小隐式转换是如何在 java 内部实现的。我知道它涉及位摆弄。

例如:

//implicit
int i =2400;
long a = (long)i;

//Explicit
float d = (float) 2.23423;

更新:

我在看了这个问题后写了这篇文章发布在这里Bitshifting to read/write data.Peter Lawrey给出了以下答案。

public long create(int one, int two){
return ((long) one << 32) | (two & 0xFFFFFFFFL);
}

重申一下,像上面这样的扩大转换或多或少地发生在机器级别,与彼得上面提到的类似逻辑相同。

请告诉我您的宝贵意见。

最佳答案

Java 使用 IEEE 754 CPU 支持的标准机器代码指令。因此,Java 不会使用您可以进一步分解的东西来实现此功能。

用于从 double 型到浮点型的转换。

  • 标志被保留
  • 指数会被截断,但是如果数字太大,它会变成无穷大,如果太小,它会变成零。
  • 两种格式都有一个隐含的最高位,即 1,这一点没有改变。
  • 保留尾数的前 23 位(可选对第 24 位进行舍入)

对于 float 到 double,过程类似,只是字段被扩展。

然而,这一切都是在浮点处理器单元中完成的,Java 不参与它的发生。

关于java - java 中的原始数据类型转换 - 内部逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5351916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com