长整型和双精度格式具有相同按位表示的数字

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

是否存在长整型(使用二进制补码)和双精度型(使用 IEEE 754 格式)的二进制表示形式完全相同的值?如果是这样,存在多少个这样的数字以及它们是什么?特别是,我正在寻找长整型和双精度表示按位相同的情况,而不仅仅是十进制值相等的情况。有谁知道关于这个主题的任何研究或讨论吗?

我发现只有 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。因此它们的按位表示不同。

long a = X;

double b = X;

//和X的按位表示应该是相同的。

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

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.