原文鏈接:http://blog.csdn.net/qq_38646470/article/details/79427038[1.什么是位圖?
2.位圖的用處?
3.位圖的結(jié)構(gòu)
4.位圖題目操練
5.總結(jié)(優(yōu)缺點(diǎn)分析)]
1.什么是位圖?
位圖就是bitmap的縮寫。所謂bitmap,就是用每一位來存放某種狀態(tài),適用于大規(guī)模數(shù)據(jù),但數(shù)據(jù)狀態(tài)又不是很多的情況。通常是用來判斷某個(gè)數(shù)據(jù)存不存在的。在STL中有一個(gè)bitset容器,其實(shí)就是位圖。
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、平川網(wǎng)絡(luò)推廣、小程序開發(fā)、平川網(wǎng)絡(luò)營(yíng)銷、平川企業(yè)策劃、平川品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供平川建站搭建服務(wù),24小時(shí)服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
所以我們可以了解到,位圖就是一個(gè)只用每一位來保存數(shù)的狀態(tài)的結(jié)構(gòu)。
2.位圖的用處?
位圖主要用于海量數(shù)據(jù)處理,索引,數(shù)據(jù)壓縮等方面有廣泛應(yīng)用
3.位圖的結(jié)構(gòu)
關(guān)于位圖的結(jié)構(gòu),類似于哈希,位圖就是一個(gè)用每一位的0,1來表示一個(gè)數(shù)的狀態(tài)。
比如,我們現(xiàn)在有一個(gè)文件,這個(gè)文件中有數(shù) 1,5,4294967295。我們就把第1位,第5位,第4294967295位改為狀態(tài)1。
這道題中位圖結(jié)構(gòu)代碼不難,注意理解思路,必須熟練掌握位運(yùn)算。
5.總結(jié)
優(yōu)缺點(diǎn):
(1)可讀性差
(2)位圖存儲(chǔ)的元素個(gè)數(shù)雖然比一般做法多,但是存儲(chǔ)的元素大小受限于存儲(chǔ)空間的大小。位圖存儲(chǔ)性質(zhì):存儲(chǔ)的元素個(gè)數(shù)等于元素的最大值。比如, 1K 字節(jié)內(nèi)存,能存儲(chǔ) 8K 個(gè)值大小上限為 8K 的元素。(元素值上限為 8K ,這個(gè)局限性很大!)比如,要存儲(chǔ)值為 65535 的數(shù),就必須要 65535/8=8K 字節(jié)的內(nèi)存。要就導(dǎo)致了位圖法根本不適合存 unsigned int 類型的數(shù)(大約需要 2^32/8=5 億字節(jié)的內(nèi)存)。
(3)位圖對(duì)有符號(hào)類型數(shù)據(jù)的存儲(chǔ),需要 2 位來表示一個(gè)有符號(hào)元素。這會(huì)讓位圖能存儲(chǔ)的元素個(gè)數(shù),元素值大小上限減半。 比如 8K 字節(jié)內(nèi)存空間存儲(chǔ) short 類型數(shù)據(jù)只能存 8K*4=32K 個(gè),元素值大小范圍為 -32K~32K 。