簡體   English   中英

如何清除 Javascript 中某個位 position 之上的所有位

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM