Skip to content

Commit c80eedc

Browse files
committed
docs(operator): fix bit/>>>
1 parent da2c395 commit c80eedc

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

docs/operators/bit.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
- **异或运算符**(xor):符号为`^`,表示若两个二进制位不相同,则结果为1,否则为0。
1111
- **左移运算符**(left shift):符号为`<<`,详见下文解释。
1212
- **右移运算符**(right shift):符号为`>>`,详见下文解释。
13-
- **带符号位的右移运算符**(zero filled right shift):符号为`>>>`,详见下文解释。
13+
- **头部补零的右移运算符**(zero filled right shift):符号为`>>>`,详见下文解释。
1414

1515
这些位运算符直接处理每一个比特位(bit),所以是非常底层的运算,好处是速度极快,缺点是很不直观,许多场合不能使用它们,否则会使代码难以理解和查错。
1616

@@ -175,7 +175,7 @@ b // 10
175175

176176
## 左移运算符
177177

178-
左移运算符(`<<`)表示将一个数的二进制值向左移动指定的位数,尾部补`0`,即乘以`2`的指定次方。
178+
左移运算符(`<<`)表示将一个数的二进制值向左移动指定的位数,尾部补`0`,即乘以`2`的指定次方。向左移动的时候,最高位的符号位是一起移动的。
179179

180180
```javascript
181181
// 4 的二进制形式为100,
@@ -221,7 +221,7 @@ rgb2hex(color.r, color.g, color.b)
221221

222222
## 右移运算符
223223

224-
右移运算符(`>>`)表示将一个数的二进制值向右移动指定的位数,头部补`0`,即除以`2`的指定次方(最高位即符号位不参与移动)。
224+
右移运算符(`>>`)表示将一个数的二进制值向右移动指定的位数。如果是正数,头部全部补`0`;如果是负数,头部全部补`1`。右移运算符基本上相当于除以`2`的指定次方(最高位即符号位参与移动)。
225225

226226
```javascript
227227
4 >> 1
@@ -261,9 +261,9 @@ rgb2hex(color.r, color.g, color.b)
261261
// 相当于 21 / 16 = 1
262262
```
263263

264-
## 带符号位的右移运算符
264+
## 头部补零的右移运算符
265265

266-
带符号位的右移运算符`>>>`表示将一个数的二进制形式向右移动,包括符号位也参与移动,头部补`0`。所以,该运算总是得到正值。对于正数,该运算的结果与右移运算符(`>>`)完全一致,区别主要在于负数。
266+
头部补零的右移运算符`>>>`与右移运算符(`>>`)只有一个差别,就是一个数的二进制形式向右移动时,头部一律补零,而不考虑符号位。所以,该运算总是得到正值。对于正数,该运算的结果与右移运算符(`>>`)完全一致,区别主要在于负数。
267267

268268
```javascript
269269
4 >>> 1

0 commit comments

Comments
 (0)