定义掩码

const mask0 = parseInt("00000001", 2);
const mask1 = parseInt("00000010", 2);
const mask2 = parseInt("00000100", 2);
const mask3 = parseInt("00001000", 2);
const mask4 = parseInt("00010000", 2);
const mask5 = parseInt("00100000", 2);
const mask6 = parseInt("01000000", 2);
const mask7 = parseInt("10000000", 2);

flags数据

let valueFlags = 1;

检测掩码

console.assert(valueFlags & mask0);

设置掩码flags

valueFlags |= (mask0 | mask1); // valueFlags = valueFlags | (mask0 | mask1)
console.assert(valueFlags & mask0 && valueFlags & mask1); valueFlags |= mask7; // valueFlags = valueFlags | mask7
console.assert(valueFlags & mask7)

重设(删除)掩码

valueFlags &= ~mask1; // valueFlags = valueFlags & ~mask1
console.assert( !(valueFlags & mask1) ) if (
valueFlags & mask0 &&
valueFlags & mask7 &&
!(valueFlags & mask1) &&
!(valueFlags & mask2) &&
!(valueFlags & mask3) &&
!(valueFlags & mask4) &&
!(valueFlags & mask5) &&
!(valueFlags & mask6)
) {
console.log("success");
}

切换状态

valueFlags ^= mask0;
console.assert(!(valueFlags & mask0)); valueFlags ^= mask0;
console.assert(valueFlags & mask0);

某些API可能将信息储存在指定位

// 从低位到高位,index从0开始
const value = parseInt('1000000000000000000000000000000010000000000000001000000000000000', 2); // 检测第15位上是否设置了标志
console.assert( value & (1 << 15) ) // 检测第31位上是否设置了标志
console.assert( value & (1 << 31) ) // 检测第63位上是否设置了标志
console.assert( value & (1 << 63) )

在flags中取出指定位数据

let valueFlags = mask0 | mask1 | mask2;

console.log(valueFlags.toString(2)); // 111
console.log((valueFlags & (1 << 1)) === mask1); // true
console.log((valueFlags >> 1 & 1)); // 1 or 0

js 位掩码的更多相关文章

  1. Java位运算在程序设计中的使用:位掩码(BitMask)

    在Java中,位运算符有很多,例如与(&).非(~).或(|).异或(^).移位(<<和>>)等.这些运算符在日常编码中很少会用到. 在下面的一个例子中,会用到位掩码( ...

  2. 位掩码(BitMask)的介绍与使用

    一.前言 位运算在我们实际开发中用得很少,主要原因还是它对于我们而言不好读.不好懂.也不好计算,如果不经常实践,很容易就生疏了.但实际上,位运算是一种很好的运算思想,它的优点自然是计算快,代码更少. ...

  3. JS位运算和遍历

    JS位运算符 整数 有符号整数:允许使用正数和负数,第32位作为符号位,前31位才是存储位 无符号整数:只允许用正数 如果用n代表位 位数 = 2^n-1 由于位数(1.2.4.8.16...)中只有 ...

  4. Windows API 第16篇 GetLogicalDrivers 获取驱动器位掩码

    函数原型:DWORD GetLogicalDrives(VOID);The GetLogicalDrives function retrieves a bitmask representing the ...

  5. Java中的位掩码BitMask

    目录 JDK源码的使用 日常工作中的使用 JDK源码的使用 最近在JDK源码中闲逛,无意中看到了java.lang.reflect.Modifier这个类,这个类很简单,都是些常量定义和判断方法,于是 ...

  6. JS位操作符

    1.按位与 AND & var result = 25 & 3; alert(result); //1var result2 = 25 & -3;alert(result2); ...

  7. js 位运算符

    MDN定义:位运算符将它的操作数视为32位元的二进制串(0和1组成)而非十进制八进制或十六进制数. 例如:十进制数字9用二进制表示为1001,位运算符就是在这个二进制表示上执行运算,但是返回结果是标准 ...

  8. js位运算-按位非

    正数 取得二进制表示 取反(发现符号位是1,表示负数) 符号位不变,其余位取反 取反后加一 负数 取得负数的二进制表示(即绝对值的二进制反码加一) 取反即可

  9. Codeforces Round #626 Div2 D. Present(位掩码,二分)

    题目链接:https://codeforces.com/contest/1323/problem/D 题意:给了大小为4e5的数组a,其中1<=ai<=1e7.求所有点对和的异或和,即: ...

随机推荐

  1. 像羽毛一样轻的MVVMLight(一)(MVVM 和 MVVMLight简介)

    致敬 在此致敬翁智华大佬,感谢大佬为后辈们写下如此详细的文档,本文将在原文基础上添加些自己的理解,希望这样优秀的文档广为流传. 原文请参考 https://www.cnblogs.com/wzh201 ...

  2. 你应该了解的25个JS技巧

    目录 1. 类型检查小工具 2. 检查是否为空 3. 获取列表最后一项 4. 带有范围的随机数生成器 5. 随机 ID 生成器 6. 创建一个范围内的数字 7. 格式化 JSON 字符串,string ...

  3. Dubbo 总结:关于 Dubbo 的重要知识点

    一 重要的概念 1.1 什么是 Dubbo? Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能.轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远 ...

  4. 强连通分量 与 2-SAT

    近期一直在刷这方面的题 因为没法学新知识 但又想写点什么 就水篇博文吧 引理 简单来说,在一个有向图中,若所有点之间两两互相直接可达,则将这个图成为强连通分量 强连通分量可以是某个有向图中的子图 求强 ...

  5. LOJ10082

    题目描述 原题来自:Centrual Europe 2005 我们有N个字符串,每个字符串都是由 a 至 z 的小写英文字母组成的.如果字符串A的结尾两个字符刚好与字符串B的开头两个字符匹配,那么我们 ...

  6. JavaWeb——B/S,C/S结构,HTTP协议

    B/S: 开发基于B/S结构项目:目前主要采用三种服务器端语言:JSP,PHP,ASP.NET. 这三种语言构成三种常用应用开发组合:JSP+Oracle组合.PHP+MySQL体系.以及ASP.NE ...

  7. 关于webservice实现web接口

    package service; import java.util.List; import javax.jws.WebMethod;import javax.jws.WebService; /** ...

  8. dedecms不能保存jpeg格式图片的解决方法

    方法如下: 进入织梦的后台管理目录,默认是dede文件夹,找到/inc/inc_archives_functions.php文件. 在文件里查找gif|jpg|,我找到了4个, 在它们后面加jpeg的 ...

  9. 前端基础之html学习一:

    网站的建站流程 页面图例 网页的结构 WEB标准 WEB标准是网页制作的标准,它不是一个标准,它是根据网页的不同组成部分生成的一系列标准.这些标准大部分由W3C起草发布,也有部分标准由ECMA起草发布 ...

  10. SignalR入坑笔记

    什么是SignalR ASP.NET Core SignalR 是一个开源库,它简化了向应用程序添加实时 web 功能的功能. 实时 Web 功能使服务器端代码能够即时将内容推送到客户端. ASP.N ...