Jack N @ GitHub

Full stack engineer, focus on: Angular/React, node.js/.Net

0%

算法 - 位操作

1. 概述

位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算)。

2. 取反(NOT)~

3. 按位或(OR)|

4. 按位异或(XOR)^

5. 按位与(AND)&

6. 移位 >>, <<, >>>

  • 移动: >>, <<
  • 无符号右移: >>>
  • 无符号左移是不存在的,因为左右在低位补位,而低位没有正负数的概念,因此不存在无符号左移

7. 其他位操作技巧P

7.1. n & (n - 1)

该位运算技巧可以直接将 n 的二进制表示的最低位 1 移除。

  1. 不停的进行 n = n & (n - 1) 操作,直至n为0,可以计算二进制数的1的个数