js通過位運算實現許可權加解密

2022-09-24 02:30:10 字數 742 閱讀 2397

首先介紹一下js中的位運算:

1. "&" :與運算,轉化為二進位制數,如果相同位數都為1則得結果為1,否則為0;

2. "|" :或運算,轉化為二進位制數,如果相同位數只要有乙個為1則得結果為1,否則為0;

3. "^" :異或運算,轉化為二進位制數,如果相同位數不同則得結果為1,否則為0;

4."<

順便說一下,十進位制數字互相轉化。

十進位制轉為別的進製:

var num = 123;

console.log(num.tostring(2))

console.log(num.tostring(8))//引數傳想要轉化的位數別的進製轉化為十進位制:

var num = 110;

console.log(parseint(num,2))//二進位制轉化為十進位制假設我們現在有5項許可權,在二進位制中用1代表擁有許可權,0代表不擁有。所以11111這樣代表擁有所有的五項許可權,那麼我們如何知道使用者是否有某一項具體許可權呢。

比如,我們現在想檢測使用者是否有第一項許可權,我們首先用過異位 1 << 0,向左移0位,還是1,然後1 & (math.pow(2,5) -1),

如果返回0,說明個位對不上,也就是說我們當前沒有許可權,如果返回1,說明我們擁有第一項許可權,同理,如果需要檢驗第二位許可權,只需要異位2就好了。

if((1 << 0) & (math.pow(2,5) - 1) !== 0)

if((1 << 1) & (math.pow(2,5) - 1) !== 0)

通過位運算實現數值交換

對於數值的交換操作,通常會採用第三個變數作為中間變數過渡的交換方式。temp a a b b temp 使用這種方法,可以保證交換的準確性,但是由於會使用第三個變數,占用了額外的記憶體空間。那麼有沒有辦法不借助第三個變數實現兩個數值的交換呢?可以通過數值相加寄存和位運算兩種方式。1 相加寄存 可以將...

php mysql通過位運算操作推薦位

position 字段設定為tinyint 假定 1代表首頁推薦 2代表欄目推薦 4代表內頁推薦 8代表其他推薦 那麼如果position 欄位的值為3就代表首頁推薦 欄目推薦 1 2 如果position 欄位的值為7代表首頁推薦 欄目推薦 內頁推薦 1 2 4 然後 position i pos...

彙編系列7 計算機如何通過位運算實現四則運算

要點回顧 計算機只認識0和1,也只會做位運算。連最基本的加減乘除都無法直接計算,而是要通過位運算間接來實現。一 加法過程 在不考慮進製的情況下,加法運算結果與 異或運算結果一樣。判斷是否有進製 與運算。有1就有進製,全為0,則異或結果為最終結果。如果與運算有1,則將與運算結果左移1位,與上面異或運算...