浅析js中的位运算及应用

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 关于2的倍数的乘法除法
4>>1 // 4/Math.pow(2,1) === 2
2<<2 // 2*Math.pow(2,2) === 8

// 取整
3.14|0 // 3
3.14^0 // 3
3.14&3 // 3
~~3.14 // 3
3.14>>0 // Math.floor(3/Math.pow(2,0)) === 3
3.14<<0 // Math.floor(3*Math.pow(2,0)) === 3

// 不借助第三个变量下交换两数
let a=1,
b=2;
a^=b;
b^=a;
a^=b;
// a === 2,b === 1

Concept

位运算符

| 或 只要有一个为1,就为1
& 与 只有都是1的情况,才为1
^ 异或 相同为0,不同为1
~ 否 取反
<< 左移 向左移动指定位数,尾部补0
>> 右移 向右移动指定位数,首部补0
>>> 带符号右移

Convert

Demical

规则 逢十进一
基数 10
数码 0-9
位权 10^n-1

举例

1
2
// 转10进制
100D === 1*10^2+0*10^1+0*10^0

Binary

规则 逢二进一
基数 2
数码 0-1
位权 2^n-1

举例

1
2
// 转10进制
100B === 1*2^2+0*2^1+0*2^0

Octal

规则 逢八进一
基数 8
数码 0-7
位权 8^n-1

举例

1
2
// 转10进制
100O === 1*8^2+0*8^1+0*8^0

Hex

规则 逢十六进一
基数 16
数码 0-9,a-f
位权 16^n-1

举例

1
2
// 转10进制
100H === 1*16^2+0*16^1+0*16^0

Decaimal convert to others

短除法

短除法
短除法
1
2
3
6D -> 110B
9D -> 11O
17D -> 11H