- 左移
10 << 1 // 1010(10) --- 10100(20) 公式:a << b 将a左移b位 a * (2^b)
- 右移
10 >> 1 // 1010(10) --- 101(5) 公式:a >> b 将a右移b位 a / (2^b)
# 按位操作:
- 按位与
每一位都为 1,结果才为 1
- 按位或
其中一位为 1,结果就是 1
- 按位异或
每一位都不同,结果才为 1
面试题:两个数不使用四则运算得出和
function sum(a, b) {
if (a == 0) return b
if (b == 0) return a
let newA = a ^ b
let newB = (a & b) << 1
return sum(newA, newB)
}
← 前端开发中用得上的设计模式 基本概念 →