首页 > 解决方案 > 在 Javascript 中“打开”特定位

问题描述

我正在尝试在 JavaScript 中解决以下问题:

如果在 8 位数字中放置 2 个(或更多)位“on”,我如何生成正确的数字来表示该字节?例如:

给定数字 1 和 3,这意味着第 1 个最高(最高有效)和第 3 个最高(第 3 个最高有效)位打开,我如何返回 10100000 或 160?给定 1、3 和 7,我如何返回 10100010 等?

标签: javascriptbinarybinary-operators

解决方案


为此,您使用位移位运算符,并对不同的位进行OR

1<<7 | 1<<5  ===  0b10100000

由于您从左数 (MSB) 开始计数,并且使用从 1 开始的索引而不是从 0 开始的索引,因此您可以从 8 中减去:

1<<(8-1) | 1<<(8-3) | 1<<(8-7)  ===  0b10100010

或将位右移256

256>>1 | 256>>3 | 256>>7  ===  0b10100010

推荐阅读