js 位掩码
定义掩码
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 位掩码的更多相关文章
- Java位运算在程序设计中的使用:位掩码(BitMask)
在Java中,位运算符有很多,例如与(&).非(~).或(|).异或(^).移位(<<和>>)等.这些运算符在日常编码中很少会用到. 在下面的一个例子中,会用到位掩码( ...
- 位掩码(BitMask)的介绍与使用
一.前言 位运算在我们实际开发中用得很少,主要原因还是它对于我们而言不好读.不好懂.也不好计算,如果不经常实践,很容易就生疏了.但实际上,位运算是一种很好的运算思想,它的优点自然是计算快,代码更少. ...
- JS位运算和遍历
JS位运算符 整数 有符号整数:允许使用正数和负数,第32位作为符号位,前31位才是存储位 无符号整数:只允许用正数 如果用n代表位 位数 = 2^n-1 由于位数(1.2.4.8.16...)中只有 ...
- Windows API 第16篇 GetLogicalDrivers 获取驱动器位掩码
函数原型:DWORD GetLogicalDrives(VOID);The GetLogicalDrives function retrieves a bitmask representing the ...
- Java中的位掩码BitMask
目录 JDK源码的使用 日常工作中的使用 JDK源码的使用 最近在JDK源码中闲逛,无意中看到了java.lang.reflect.Modifier这个类,这个类很简单,都是些常量定义和判断方法,于是 ...
- JS位操作符
1.按位与 AND & var result = 25 & 3; alert(result); //1var result2 = 25 & -3;alert(result2); ...
- js 位运算符
MDN定义:位运算符将它的操作数视为32位元的二进制串(0和1组成)而非十进制八进制或十六进制数. 例如:十进制数字9用二进制表示为1001,位运算符就是在这个二进制表示上执行运算,但是返回结果是标准 ...
- js位运算-按位非
正数 取得二进制表示 取反(发现符号位是1,表示负数) 符号位不变,其余位取反 取反后加一 负数 取得负数的二进制表示(即绝对值的二进制反码加一) 取反即可
- Codeforces Round #626 Div2 D. Present(位掩码,二分)
题目链接:https://codeforces.com/contest/1323/problem/D 题意:给了大小为4e5的数组a,其中1<=ai<=1e7.求所有点对和的异或和,即: ...
随机推荐
- WPF学习里程(二) XAML基础
1.什么是XAML? 官方语言: XAML是eXtensible Application Markup Language的英文缩写,相应的中文名称为可扩展应用程序标记语言,它是微软公司为构建应用程序用 ...
- Webpack4.0各个击破(5)module篇
一. 模块化乱炖 脚本合并是基于模块化规范的,javascript模块化是一个非常混乱的话题,各种[*MD]规范乱飞还要外加一堆[*.js]的规范实现.现代化前端项目多基于框架进行开发,较为流行的框架 ...
- SpringMVC 通过commons-fileupload实现文件上传
目录 配置 web.xml SpringMVC配置文件 applicationContext.xml 文件上传 Controller 上传实现一 上传实现二 测试 依赖 配置 web.xml < ...
- SQL关键字
不等号(!=,<>) 查询出来的结果集不包含有当前字段为null的数据 <> 是标准的sql语法, 开发中尽量使用<>, 会将字段为null的数据也当做满足不等于的 ...
- 【PY从0到1】第七节 函数
# 7 第七节 函数 # 函数对于编程语言来说是一块重量级的内容. # 他可以实现或者简化编写的代码. # 编写好特定功能的函数后,就可以重复调用函数来完成任务. # 下面我们就用函数的形式来封装前面 ...
- MVC与三层架构解析学习
概要 MVC与三层架构不是简单的相等,二者之间存在一些区别. 今天,看到一位博主总结笔记,借鉴而来,以供以后学习. 将javaweb开发中的MVC(SSM框架)与三级架构比较,来解析二者之间的关系. ...
- Spring Cloud,Docker书籍资源、优秀博文等记录
Spring Cloud,Docker书籍资源.优秀博文等记录 Spring Cloud,Docker书籍资源.优秀博文等记录 一.书籍 二.博文地址 三.思维导图Or图片 3.1一张图总结 Dock ...
- redis-服务器配置-主从
1.配置sentinel.conf -------------------------------------------------- port 26379 dir "/home/app/ ...
- ajax带checkbox选择值到后台
function togglefun(checkbox){//全选 $('input[name=cids]').prop('checked', $(checkbox).prop('checked')) ...
- 小白搭建WNMP详细教程---MYSQL安装与设置
MYSQL的安装请参考WAMP中的mysql的安装教程,两者是一样的. https://www.cnblogs.com/missbye/p/12050312.html