Appearance
位运算:operators
- 按位操作符(Bitwise operators) 将其操作数(operands)当作 32 位的比特序列(由 0 和 1 组成),而不是十进制、十六进制或八进制数值。
- 例如,十进制数 9,用二进制表示则为 1001。
- 按位操作符操作数字的二进制形式,但是返回值依然是标准的 JavaScript 数值。
&:与
简述:真真为真,其余为假
用法:a & b
描述:对于每一个比特位,只有两个操作数相应的比特位都是 1 时,结果才为 1,否则为 0。
js
1 & 3; // 1
// 1 (base 10) = 00000000000000000000000000000001 (base 2)
// 3 (base 10) = 00000000000000000000000000000011 (base 2)
// ---------------------------------------
// 1 & 3 (base 10) 00000000000000000000000000000001 (base 2) = 1 (base 10)
3 & 8; // 0
// 3 (base 10) = 00000000000000000000000000000011 (base 2)
// 8 (base 10) = 00000000000000000000000000001000 (base 2)
// ---------------------------------------
// 3 & 8 (base 10) 00000000000000000000000000000000 (base 2) = 0 (base 10)|:或
简述:假假为假,其余为真
用法:a | b
描述:对于每一个比特位,当两个操作数相应的比特位至少有一个 1 时,结果为 1,否则为 0。
|=: 按位或赋值
用法:a |= b
描述:执行按位或运算,并将结果分配给变量。
ts
let a = 5;
a |= 3;
// 00000000000000000000000000000101
// 00000000000000000000000000000011
console.log(a); // 7
// 00000000000000000000000000000111^:异或
用法:a ^ b
描述:对于每一个比特位,当两个操作数相应的比特位有且只有一个 1 时,结果为 1,否则为 0。
~:非
简述:真为假,假为真
用法:~ a
描述:反转操作数的比特位,即 0 变成 1,1 变成 0。
<<:左移
用法:a << b
描述:将 a 的二进制形式向左移 b (< 32) 比特位,右边用 0 填充。
>>:右移
用法:a >> b
描述:将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位。
>>>:无符号右移
用法:a >>> b
描述:将 a 的二进制表示向右移 b (< 32) 位,丢弃被移出的位,并使用 0 在左侧填充。
进制转换与查看:
数字怎么转换进制呢?(示例只取 6 位)
- 10 进制转其他
toString(x)
js
const borderTown = 8;
// 转成2进制
borderTown.toString(2); // "001000"
// 解析"1000":1*2^3 + 0*2^2 + 0*2^1 + 0*2^0
// 8 + 0 + 0 + 0 = 8
// 转成8进制
borderTown.toString(8); // "000010"
// 转成16
borderTown.toString(16); // "000008"- 其他转 10 进制
parseInt(value, x)
js
parseInt("001000", 2); // 8
parseInt("000010", 8); // 8
// 16和10一样,是不是。
parseInt("000008", 16); // 8
parseInt("000008", 10); // 8