畢業季,浪了好久。 。 。過了這個六月,就正式踏入社會啦。 。 。總感覺還沒準備好。 。 。 。 。 。 。 。 。 。 特大轉折。 。 。記錄一下最近的一些知識。 。 。
位元儲存的概念
在資料庫儲存中,可以使用一種類別二元字串來保存多個值,當這個二進位值是由0和1組成的時候,就可以依照從右到左,每個位元依照2^n計算值相加進而換算成為一個十進制數,從而實現一個十進制值保存多種情況的目的。
舉個栗子
現在3種不同的css樣式,可以套用在不同的一些地方,如app、pc、小程式等。
按值儲存的話,分別用1-3代表3種樣式(styleType),分別用1-3代表支援類型app、pc、小程式(supportType),然後儲存的時候應該是按這種方式:
styleType | #supportType |
1 | 1,3 |
2 | 1,2,3 |
#3 | ##1|
... |
#supportType | |
5 | |
7 | |
1 | |
... |
#①場景一,在在app環境中,過濾樣式,也就是只把支援app的樣式過濾出來顯示。
應用原理:數值相與,只有1與1結果為1。
也就是說,我們如果要過濾出支援app的樣式,也就是過濾styleType中第一位為1時對應的樣式,即1**,也就是十進制數值中包含4這個數的。 js中,十進位數可以直接相與,所以遍歷過濾程式碼可以直接這樣判斷:(item.supportType & 4 == 4)?'对应的styleType支持':'对应的styleType不支持' //注意,==优先级比&大,所以要加括号
#②場景二,修改supportType
因為儲存到資料庫中的是一個十進制的數組,所以才修改對應關係的時候,必須知道改的是哪個位置,並改變對應位置上的值,類別二進位表示就是0變成1或1變成0的過程,但是改變十進位的陣列則是改變對應的位元的2^n的增加減少過程。 如:var supportType = { //按位编码,预留3位 'app':4, 'pc':2, 'mini':1 } var supportVal = 0; i f(obj.supportmini == 1){ //支持小程序 supportVal= supportVal+supportType .mini; } if(obj.supportPc == 1){ //支持pc supportVal= supportVal+ supportType .pc; } obj.supportVal= supportVal;
#
以上是按位元儲存的概念及實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!