位运算应用

取模

由于偶数的最低位为 0,奇数为 1,所以取模运算可以用位操作来代替。

// 位操作
if (value & 1) {
    // 奇数
} else {
    // 偶数
}
取整
~~9.12 //9
~~'2.4' //2
~~'-2.4' //-2
~~undefined //0
~~null //0
Number(undefined) //NaN
Number(null) //0
位掩码
const a = 1
const b = 2
const c = 4
const options = a | b | c

通过定义这些选项,可以用按位与操作来判断 a/b/c 是否在 options 中。

// 选项 b 是否在选项中
if (b & options) {
    ...
}

左移

左移运算将数对应的二进位全部向左移动若干位,高位丢弃,低位补 0。左移运算的运算符为 <<

5<<4 //80 类似5*2的四次方

右移

80 >> 4 //5 类似5/(2的四次方) 当除以数字小于1则等于0,例如
4 >> 2 //1
4 >> 3 //0

位运算做授权

// 位运算操作

// 定义
const STYLE = 1;
const CLASS = 1 << 1;
const CHILDREN = 1 << 2;

// 授权
let vnodeType = STYLE | CLASS;

// 判断 &
console.log("vnodeType的类型STYLE", !!(vnodeType & STYLE));
console.log("vnodeType的类型CLASS", !!(vnodeType & CLASS));
console.log("vnodeType的类型CHILDREN", !!(vnodeType & CHILDREN));
// 删除授权
vnodeType ^= CLASS;
console.log("vnodeType的类型STYLE", !!(vnodeType & STYLE));
console.log("vnodeType的类型CLASS", !!(vnodeType & CLASS));
console.log("vnodeType的类型CHILDREN", !!(vnodeType & CHILDREN));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 总结: 位运算符 是 直接对整数在内存中的二进制位进行操作; Python运算符优先级: 以下表格列出了从最高到最...
    BeautifulSoulpy阅读 921评论 0 1
  • 一、判断整数的奇偶性 传统思路: 按照传统的思路,判断一个整数的奇偶性是通过用这个数与2求模,看运算结果是否为0 ...
    Heezier阅读 601评论 0 1
  • 位运算包括 求与&、求或|、异或^、求反~ 位运算的妙用 判断奇偶数:与1进行求与 异或可以理解为不进位的加法:1...
    z花落阅读 326评论 0 0
  • 按位运算符有6个: 按位与 & 按位或 | 按位异或 ^ 取反 ~ 右移 >> 左移 << 应用...
    月下吴刚_c8c7阅读 1,334评论 0 0
  • 本文章主要讲解JS中位运算符的基本说明和常见用法 位运算符用于32位的数字上, 任何的数字操作都将转为32位, 运...
    jicemoon阅读 1,233评论 2 3