检查哪些标志是整数的开/关?

use*_*567 3 javascript jquery

首先对不起我的英语。假设我有,

0 // 0
1 // 1
2 // 10
3 // 11
4 // 100
5 // 101
6 // 110
7......................
Run Code Online (Sandbox Code Playgroud)

现在,我可以说 5 有两个(第 3 个和第 1 个)ON 标志。类似地,7 具有三个(第 1、第 2 和第 3 个)ON 标志,依此类推。

现在,假设我有一个输入 2 和 flag1、flag2、..... flagn。我需要在程序上找到只有 flag2 是 ON 的。

Cod*_*ter 5

你不能,正如你已经在二进制表示中看到的那样。3 可以是 3 或 2+1。所以使用二的幂:

0 // 0000
1 // 0001
2 // 0010
4 // 0100
8 // 1000
Run Code Online (Sandbox Code Playgroud)

然后在检查 的值时5 (0101),您将看到 1 和 4 的位已设置,因此您知道启用了哪些标志。

我不知道确切的 JavaScript 语法,但可以这样做:

FLAG_1 = 1
FLAG_2 = 2
FLAG_3 = 4
FLAG_4 = 8
FLAG_5 = 16

var foo = FLAG_2 | FLAG_5; // Use binary OR (|) to add flags

if (foo & FLAG_5)
{
    // Do something that has to be done when FLAG_5 is set
}
Run Code Online (Sandbox Code Playgroud)