簡體   English   中英

Javascript和一般情況下的按位運算符

[英]Bitwise operators in Javascript and in general

我正在解析一些二進制文件,將它們打開並放在ArrayBuffer

在我正在讀取的特定文件結構中,有很多位是boolean ,我可以檢查是否用以下方法檢查它們:

(flag & 1) != 0; // bit 0 
(flag & 2) != 0; // bit 1 
(flag & 4) != 0; // bit 2 

等等

但是,我在獲取后面的位值時遇到了麻煩。 它們跨越多個位(例如位4-6),並由0-7的整數組成。

如何讀取多個位? 我了解到,這不是JavaScript問題,而是關於按位和按位運算符如何工作的問題。

假設您希望從這樣的字節中獲取4-6位:

76543210
 ^^^

您將像這樣構造一個位掩碼:

0x70

意思是:

01110000

然后,您將&與數字相乘並右移4次:

( byte & 0x70 ) >> 4
//Number between 0-7

假設最低有效位在位置“ 0”,並且您希望位位置4-6之間的3位整數。

var value = (flag >>> 4) & 0x0007;

換句話說,右移“標志”到右邊4位,這樣位4-6被移入位置0-2。 然后屏蔽掉最后三個位(二進制111 =十進制7)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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