Long 或 int 是有符号的实体,可以是正数或负数,但不能有任何小数部分。
浮点型或双精度型在计算机中用于表示具有小数部分的数字。
long 和 double 都是 64 位。Long 有 1 位用于有符号(确定正数或负数),其余 63 位组成数字。所以范围可以是 -2^63 到 2^63-1
双精度数以 IEEE 二进制浮点算术标准指定的不同方式表示,旨在在计算机中存储非常大的数字。64 位双精度表示为 - [1 位][11 位指数][52 位尾数]
让我们看一个例子,将 100.25 转换为存储为双精度的二进制形式
十进制 100.25 转换成二进制是 1100100.01
然后将二进制 1100100.01 归一化为 1.10010001 * 2^6
6 是指数成分。我们选择 base 或 offset 为 1023,以便可以正确表示负数和正数。所以 6+1023=1029 是添加偏置后的偏移指数分量。100000011 是指数的二进制表示。
为了从 1.10010001 计算尾数,我们忽略小数点右边的 1,只使用小数点右边的所有数字(即 10010001),并用零填充任何剩余的 52 位。所以,现在尾数将是 1001 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
因此,最后 64 位表示为有符号位指数尾数 0 100000011 1001 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000