[英]How to clear all bits above a certain bit position in Javascript
我在 Javascript 中有一點操作問題。
我有一個數字,我需要從中清除一些高位。 需要清除哪些確切位是通過編程確定的,作為一些計算的結果,我有兩條信息,一個位 position 和該特定位 position 的掩碼。 我想要做的是清除我的值中該位 position (不包括該位)之上的所有位。
所以,如果我的價值是:
0b11111111
並且,計算產生了位 position 3 和該位 position 的掩碼:
0b00000100
我想在我的值中屏蔽或清除該位 position 3 上方的位並最終得到:
0b00000111
提醒一下,我想在上面清除的位 position 是通過程序確定的,可以是任何位 position 所以我不能只編寫預定義的掩碼。 我該怎么做? 編程環境為 node.js 中的 Javascript。
value & ((mask << 1) - 1)
在給出的示例中, 100
左移 1 將是1000
(8) 減一將是111
(7)。 value & 111
將清除除最后三位之外的所有位。 可能不適用於超過 30 位。 如果需要 31 位,也可以使用非常相似的公式:
value & (mask * 2 - 1)
邏輯幾乎相同,但是當乘法在 52 位尾數上執行時,你會多得到一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.