我不明白int 63823是如何占用更少的空间而不是双1.0.在这个特定的实例中,是否没有更多信息存储在int中?
好问题.当您看到63823
并且1.0
是基础数据的表示时,您看到的是您没有看到基础数据.它是专门格式化,以便您可以读取它,但它是不是该怎么机器看到它.
Java使用非常特殊的格式来表示int
和double
.你需要看看那些表示理解为什么63823
当被表示为Java采用32位int
和1.0
当作为一个Java表示采用64位double
.
特别是,int
Java中的63823 表示为:
00000000000000001111100101001111
Run Code Online (Sandbox Code Playgroud)
和1.0作为double
被表示在Java中作为:
0011111111110000000000000000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)
如果你想探索更多,我推荐Two's Complement和每个计算机科学家应该知道的关于浮点运算的内容.