检查哪些标志是整数的开/关
Check which flags are On/Off of an Integer Number?
首先对不起我的英语。假设我有,
0 // 0
1 // 1
2 // 10
3 // 11
4 // 100
5 // 101
6 // 110
7......................
现在,我可以说 5 有两个(第 3 和第 1 个)ON 标志。同样,7 有三个(第 1、第 2 和第 3)ON 标志,依此类推。
现在,假设我有一个输入 2 和标志 1、标志 2、.....弗拉根。我需要在语法上找到只有标志 2 是 ON。
你不能
,因为你已经在二进制表示中看到。3 可以是 3 或 2+1。所以使用二的幂:
0 // 0000
1 // 0001
2 // 0010
4 // 0100
8 // 1000
然后,在检查值 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
}
这可以使用 JavaScript 按位运算符来完成,特别是&
运算符。如果输入数字2
那么您可以检查哪些标志是这样设置的:
console.log(2 & 1); // 1 = 00000001b, result = 0
console.log(2 & 2); // 2 = 00000010b, result = 2, bingo!
console.log(2 & 4); // 4 = 00000100b, result = 0
console.log(2 & 8); // 8 = 00001000b, result = 0
此运算符的行为描述如下:
按位和
在每个位位置返回一个 1,其中 两个操作数的相应位是 1。
编辑
上面的例子可以这样写成一个循环:
var input = 7;
for(var bit = 0; bit < 8; bit++) {
var mask = Math.pow(2, bit);
console.log("bit #" + bit + " is", (input & mask) == mask ? "set" : "clear");
}
你可以检查一个标志是否打开了,使用标志的位置和运算符(0索引)
if (num & (1 << flagPosition)) { /*flag is on */}
else { /*flag is off */}
您可以检查是否只有一个标志正在使用 &与此形式 2^N - 1 的数字一起使用(其中 N 是最大标志数 + 1)
var N = (1 << 31) - 1;
if (N & num == 1 << flagPosition) {/* only flagPosition is ON*/}
else { /*flagPosition is OFF or there are other ON flags*/}
num = 6
arr = new Array();
while(num!=0){
arr.push(num%2);
num = parseInt(num/2);
}
console.log(arr)
Arr 将有位 1 和 0,您可以从中找到 ON
相关文章:
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 检测个位数整数时正在转换毫秒
- 限制javascript变量的最小/最大整数
- 如何在 Javascript 中将变量的值从字符串转换为整数
- 正则表达式只允许 x 个整数
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 如何在Chartjs中制作整数比例
- 减去两个索引不同但值相同的整数
- 全局标志仅与第一个匹配项匹配的Regexp
- 使用jquery从整数中减去
- 有效地获取两个区间之间的随机整数
- 为什么我的javascript程序没有将其转换为整数而不是字符串
- 带静态字符e输入的文本框数字和带javascript的负整数
- Javascript-当存在's是一个整数标记
- parseInt()方法如何返回整数
- 由于某种原因,JavaScript整数存储为未定义
- Js char数组将字符串整数视为整数
- 如何翻译MySQL查询's ResultSet转换为整数
- 检查哪些标志是整数的开/关
- 在Javascript位掩码标志值中安全使用的最大整数是多少?