[java]基礎型別

大搜車-自娛發表於2012-11-29
1 byte = 1位元組 = 8bit 可表達 2的八次方個數字 = 256
1 short= 2位元組 = 16bit 可表達2的十六次方個數字 = 65536 約6W
1 char = 2位元組 = 16bit 可表達2的十六次方個數字 = 65536 約6W
1 int = 4位元組 = 32bit 可表達2的32次方個數 = 4294967296 約42億
1 float= 4位元組 = 32bit 可表達2的32次方個數 = 4294967296 約42億
1 long = 8位元組 = 64bit 可表達2的64次方個數 = 18446744073709551616 約184億億 184*10^16次方
1 double= 8位元組 = 64bit 可表達2的64次方個數 = 18446744073709551616 約184億億


知道這些,才能理解bitmap需要多大的記憶體來計算10億個數字裡是否有重複數字,每個數字是一個IP,可見儲存這些資料只需要一個int大小的記憶體已經足以,但運算還是需要記憶體的。


bitmap是比hash更加優越的地方在於此吧

1個IP 192.168.101.129 為12位的資料,也就是說有10億個12位的數字。1個12位的數字99999999999 999億那麼需要一個double型別的數字來表示這個12位的數字,1個double型別佔用8位元組,也就是大概需要10億*8位元組來做這個事情,總共需要記憶體10億byte,約0.93G記憶體即可。

相關文章