首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript和一般情况下的位运算符

Javascript和一般情况下的位运算符
EN

Stack Overflow用户
提问于 2011-12-31 19:47:55
回答 2查看 1.8K关注 0票数 2

我正在解析一些二进制文件,我已经打开了它们,并在ArrayBuffer中。

在我正在读取的特定文件结构中,有一些位是boolean的,我可以检查它们是否被检查:

代码语言:javascript
复制
(flag & 1) != 0; // bit 0 
(flag & 2) != 0; // bit 1 
(flag & 4) != 0; // bit 2 

等。

但是,我在获取后续位的值时遇到了问题。它们跨越多个位(例如,位4-6),并由0-7的整数值组成。

如何像这样读取多个比特?我知道这不是一个JavaScript问题,而是比特和按位运算符如何工作的问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-31 19:55:12

假设你想从一个字节中得到4-6位,如下所示:

代码语言:javascript
复制
76543210
 ^^^

您可以像这样构造一个位掩码:

代码语言:javascript
复制
0x70

这意味着:

代码语言:javascript
复制
01110000

然后你会用这个数字,向右移动4次:

代码语言:javascript
复制
( byte & 0x70 ) >> 4
//Number between 0-7
票数 4
EN

Stack Overflow用户

发布于 2011-12-31 19:51:50

假设最低有效位在位置"0",并且您希望3位整数在位位置4-6之间。

代码语言:javascript
复制
var value = (flag >>> 4) & 0x0007;

换言之,向右移位4位,这样位4-6被移位到位置0-2。然后只屏蔽最后三位(二进制111 =十进制7)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8687926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档