哪些数字在 IEEE-754 二进制 64(“双精度”)和 64 位二进制补码 long 中具有相同的按位表示

问题描述 投票:0回答:1

是否存在 64 位二进制补码表示(有时用于

long
)和 IEEE-754 二进制 64 表示(通常用于
double
)相同的值?如果有,有多少个这样的数字,它们是什么?有谁知道关于这个主题的任何研究或讨论吗?

我发现只有 0,double 和 long 的按位表示是相等的,两者都只是 64 位零。还有其他的吗?如果我们取 1,那么使用二进制补码的 long 1 按位表示为 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001,对于 double 为 0 01111111111 0000 000000 00 00000000 00000000 00000000 00000000 00000000。因此它们的按位表示形式不同。

bit-manipulation precision ieee-754
1个回答
-1
投票

TLDR:不,只有

0
long
double
之间具有相同的按位表示。

这基本上可以归结为

long
double
是具有不同编码方案的两种数据类型。

long
使用 补码 系统,而 Double 使用 IEEE 754 格式。

这意味着

long
由符号
1 bit
组成,其余的
63 bits
代表二进制整数的大小。

另一方面,

double
使用
1 bit
表示符号,
11 bits
表示指数,
52 bits
表示分数。

© www.soinside.com 2019 - 2024. All rights reserved.