Skip to content
This repository has been archived by the owner on May 6, 2021. It is now read-only.

Commit

Permalink
typo
Browse files Browse the repository at this point in the history
  • Loading branch information
wizardforcel committed Jul 6, 2016
1 parent a7f31a4 commit c39b279
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions ch5.md
Expand Up @@ -12,7 +12,7 @@

你可能知道计算机以二进制表示整数。对于正数,二进制的表示法非常直接。例如,十进制的5表示成二进制是`0b101`

对于负数,对清晰的表示法使用符号位来表明一个数是正数还是负数。但是还有另一种表示法,叫做“补码”(two's complement),它更加普遍,因为它和硬件配合得更好。
对于负数,最清晰的表示法使用符号位来表明一个数是正数还是负数。但是还有另一种表示法,叫做“补码”(two's complement),它更加普遍,因为它和硬件配合得更好。

为了寻找一个正数的补码,`-x`,需要找到`x`的二进制表示,将所有位反转,之后加上1。例如,要表示十进制的`-5`,要先从十进制的5开始,如果将其写成8位的形式它是`0b0000 0101`。将所有位反转并加以会得到`0b1111 1011`

Expand Down Expand Up @@ -61,7 +61,7 @@ C语言中,这意味着表达式`12 & 10`值为8。

通常,`&`用于清除位向量中的一些位,`|`用于设置位,`^`用于反转位。下面是一些细节:

**清除位:**对于任何`x``x & 0`值为0,`x & 1`值为`x`所以如果你讲一个向量和3做且运算,它只会保留最右边的两位,其余位都置为0。
**清除位:**对于任何`x``x & 0`值为0,`x & 1`值为`x`所以如果你将一个向量和3做且运算,它只会保留最右边的两位,其余位都置为0。

```
xxxx
Expand All @@ -83,6 +83,6 @@ C语言中,这意味着表达式`12 & 10`值为8。

**反转位:**最后,如果你将一个向量与3做异或运算,它会反转右边两位,其余位不变。作为一个练习,看看你能否使用`^`计算出12的补码。提示:-1的补码表示是什么?

C语言同时提供了移位运算符,`<<``>>`,它可以将位向左或向右移。向左每移动移位会使数值加倍,所以`5 << 1`为10,`5 << 2`为20。向右每移动移位会使数值减半(向下取整),所以`5 >> 1`为2,`2 >> 1`为1。
C语言同时提供了移位运算符,`<<``>>`,它可以将位向左或向右移。向左每移动一位会使数值加倍,所以`5 << 1`为10,`5 << 2`为20。向右每移动一位会使数值减半(向下取整),所以`5 >> 1`为2,`2 >> 1`为1。

## 5.3

0 comments on commit c39b279

Please sign in to comment.