gpt4 book ai didi

java - 无法从 double 转换为二进制数

转载 作者:行者123 更新时间:2023-11-30 08:16:38 25 4
gpt4 key购买 nike

我有下一个代码,它试图将 double 类型的数字转换成二进制形式。我知道这个算法,数字的整数部分可以像 int 类型数字一样转换为二进制,剩下的小数部分可以这样转换:

    integerPart = (int)value;
fractionaryPart = value-integerPart;

while(fractionaryPart != 0.0)
{
fractionaryPart = fractionaryPart*2;
integerPart = (int)fractionaryPart;
fractionaryPart = fractionaryPart - integerPart;
}

这是转换整数部分的代码

bits = 64 //8 bytes
char binary[] = new char[bits];
for(i = bits-1;i >= 0;i--)
{
if((integerPart&1) == 1)
binary[i] = '1';
else if((integerPart&1) == 0)
binary[i] = '0';
integerPart >>= 1;
}

问题是我必须按照双数查看 RAM 内存(8 字节格式)的方式打印整个数字,例如,如果我有数字 42.375,结果必须是 101010.011。但我不知道如何组合 while() 和 for() 的二进制数并将它们放入 64 位数组中,例如:

|00000000|00000000|00000000|00000000|00000000|00000000|00000010|1010.011|

有什么建议吗??

最佳答案

这不是 double 在内存中的表示方式。

float representation

以上表示是针对 32 位 float 的,对于 double 是 52 位尾数、11 位指数和 1 位符号位。

Double.doubleToLongBits是你如何把它弄出来的,longBitsToDouble是反向转换。 longBitsToDouble 的 Javadoc 讨论了转换的细节。

关于java - 无法从 double 转换为二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206561/

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