回覆列表
  • 1 # 程式小屋

    在java中,long和double表示的是2種不同的基本資料型別,long可以說是int的擴充套件,double是float的擴充套件。

    那麼,為什麼long和double佔用記憶體空間相同,而資料表示的範圍卻不同呢?

    2種不同的儲存方式

    1、Long:整型,8位元組(64bit)

    儲存形式:第一位表符號位(1表示負數,0表示正數),後面的表值

    例如:(宣告一個long,如:long long1 = 1L )下面預設64位作業系統,採用補碼

    如下圖所示,可以看出long在記憶體中的二進位制

    它的取值範圍為:[-9223372036854775808, 9223372036854775807] = [-2^63, 2^63 - 1]

    2、Double:雙精度浮點型,8位元組(64bit)

    但是同樣的64bit,儲存方式卻不一樣,如下表:

    儲存形式:第1位符號位,2-12位表階碼位,13-64位表小數位

    值範圍:[4.9E-324, 1.7976931348623157E308]

    其中,double型與二進位制型的互相轉化,大家可以思考下,如何進行轉換?(以前大學的時候學過,忘記咋轉了都)

  • 中秋節和大豐收的關聯?
  • 寶寶四個月不小心撞了頭怎樣判斷有沒有事?