位圖數(shù)據(jù)結(jié)構(gòu)其實并不是一個全新的玩意,我們可以簡單的認(rèn)為就是個數(shù)組,只是里面的內(nèi)容只能為0或1而已(二進(jìn)制位數(shù)組)。
GETBIT
用于返回位數(shù)組在偏移量上的二進(jìn)制位的值。值得我們注意的是,GETBIT
的時間復(fù)雜度是O(1)
。
GETBIT
命令的執(zhí)行過程如下:
-
計算?(即
>>3
),byte 值表示指定的??位于位數(shù)組的哪個字節(jié)(計算在第幾行); -
指定??中的了,接下來就要計算在8個字節(jié)中的第幾位呢?使用?計算可得;
-
根據(jù)??和??在位數(shù)組中定位到目標(biāo)值返回即可。
?
?
BITCOUNT
命令用于統(tǒng)計給定位數(shù)組中值為1的二進(jìn)制位的數(shù)量。功能似乎不復(fù)雜,但實際上要高效地實現(xiàn)這個命令并不容易,需要用到一些精巧的算法。
1.?暴力遍歷
2.查表法
?3.二進(jìn)制位統(tǒng)計算法:variable-precision SWAR文章來源:http://www.zghlxwxcb.cn/news/detail-618305.html
目前已知效率最好的通用算法為variable-precision SWAR
算法,該算法通過一系列位移和位運算操作,可以在常數(shù)時間(這就很牛逼了????)內(nèi)計算多個字節(jié)的漢明重量,并且不需要使用任何額外的內(nèi)存。文章來源地址http://www.zghlxwxcb.cn/news/detail-618305.html
到了這里,關(guān)于redis之Bitmap的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!