Bitwise Operators in JavaScript

本文摘自:https://chrisrng.svbtle.com/bitwise-operators-in-javascript,觉得总结的比较好,遂写一篇读书笔记。本文主要讲解位运算符在JavaScript中可以做哪些有趣的事情。

1:位运算符包括哪些呢?

按位与AND,按位或OR,按位异或XOR,按位非NOT,移位运算符<<(左移) >>(右移)。

2:Applications

Bitwise AND ( & )

确定一个数是奇数还是偶数:((x & 1) === 0);

Bitwise OR ( | )

获取一个数的整数部分:x | 0;

Bitwise XOR ( ^ )

切换值:x ^ 1;
交换两值(ES6方法:[a, b] = [b, a]):a ^= b,b ^= a,a ^= b;

Bitwise NOT ( ~ )

Array includes:!!~arr.indexOf(x);
提取数字中的整数部分:~~(3.14) === 3,当然也可以在Number原型上写个函数:

1
2
3
Number.prototype.integer = function(){
return Math[this < 0 ? 'ceil' : 'floor'](this);
}

Shift operators ( >> and <<)

Math.pow:Math.pow(2, 17) === 1 << 17;
Float to Integer conversion:(3.14 >> 0) === 3;
RGB,HEX相互转换:

const dec = parseInt(HEX, 16);

const RGB = {};
RGB.r = (dec >> 16) & 0xFF;
RGB.g = (dec >> 8) & 0xFF;
RGB.b = (dec) & 0xFF;

const HEX = ('#' + (1 << 24) + (RGB.r << 16) + (RGB.g << 8) + RGB.b).toString(16).substr(1);

Zero-filling Shift Operators ( >>> and <<< )

10进制转换为二进制:(decimal>>>0).toString(2);;