2017-06-05 105 views

回答

1

Double 65555.0被转换为整数65555,即0x10013。转换为字节需要较低的字节,它是0x13(十进制19)。

3

因为当您将65555(或65555.0)转换为二进制表示时,它需要多个字节。因此调用.toByte()取最低的一个,其是19.

65555 -> Binary == 1 00000000 00010011 
       ^^^^^^^^^ ^^^^^^^^ 
        1  0  19 
9

这是因为从较宽类型的类型更小的尺寸的数值的转换。所述DoubleIEEE 754 double precision number)具有其组成部分分解到两个权力
65555 = 2 + 2 + 2 + 2 = 65536 + 16 + 2 + 1,将其存储以二进制形式为(较高位至较低):

‭... 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1‬ 

当这个数被转换为Byte,只有它的最低8位被保留:

... _ ‭_ _ _ _ _ _ _ _ _ 0 0 0 1 0 0 1 1‬ 

而导致成2 + 2 + 2 = 16 + 2 + 1 = 19。