在java中,long和double表示的是2種不同的基本數據類型,long可以說是int的擴展,double是float的擴展。
那么,為什么long和double占用內存空間相同,而數據表示的范圍卻不同呢?
2種不同的存儲方式
Long:整型,8字節(64bit)
存儲形式:第一位表符號位(1表示負數,0表示正數),后面的表值
例如:(聲明一個long,如:longlong1=1L)下面默認64位操作系統,采用補碼
如下圖所示,可以看出long在內存中的二進制
它的取值范圍為:[-9223372036854775808,9223372036854775807]=[-2^63,2^63-1]
Double:雙精度浮點型,8字節(64bit)
但是同樣的64bit,存儲方式卻不一樣,如下表:
存儲形式:第1位符號位,2-12位表階碼位,13-64位表小數位
值范圍:[4.9E-324,1.7976931348623157E308]
例如: