提交 e66db36f 编写于 作者: W Wizard Zhang 提交者: GitHub

Merge pull request #2 from sljeff/master

modify some typo
...@@ -62,7 +62,7 @@ fclose(fp); ...@@ -62,7 +62,7 @@ fclose(fp);
## 4.1 磁盘性能 ## 4.1 磁盘性能
我之前提到过,磁盘驱动器非常慢。在当前的HDD上,从磁盘读取一个块到内存的时间为2~6毫秒。SSD要快一些,读取4KiB的块需要25毫秒,写入需要250毫秒(请见[http://en.wikipedia.org/wiki/Ssd#Controller](http://en.wikipedia.org/wiki/Ssd#Controller))。 我之前提到过,磁盘驱动器非常慢。在当前的HDD上,从磁盘读取一个块到内存的时间为2~6毫秒。SSD要快一些,读取4KiB的块需要25微秒,写入需要250微秒(请见[http://en.wikipedia.org/wiki/Ssd#Controller](http://en.wikipedia.org/wiki/Ssd#Controller))。
为了正确看待这些数据,让我们将其与CPU的时钟周期进行比较。一个拥有2GHZ时钟频率的处理器,每0.5纳秒就会完成一个时钟周期。从内存获取一个字节到CPU的时间通常为100纳秒。如果处理器每个时钟周期完成一条指令,在等待来自内存的一个字节时,它可以完成200条指令。 为了正确看待这些数据,让我们将其与CPU的时钟周期进行比较。一个拥有2GHZ时钟频率的处理器,每0.5纳秒就会完成一个时钟周期。从内存获取一个字节到CPU的时间通常为100纳秒。如果处理器每个时钟周期完成一条指令,在等待来自内存的一个字节时,它可以完成200条指令。
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
对于负数,最清晰的表示法使用符号位来表明一个数是正数还是负数。但是还有另一种表示法,叫做“补码”(two's complement),它更加普遍,因为它和硬件配合得更好。 对于负数,最清晰的表示法使用符号位来表明一个数是正数还是负数。但是还有另一种表示法,叫做“补码”(two's complement),它更加普遍,因为它和硬件配合得更好。
为了寻找一个正数的补码,`-x`,需要找到`x`的二进制表示,将所有位反转,之后加上1。例如,要表示十进制的`-5`,要先从十进制的5开始,如果将其写成8位的形式它是`0b0000 0101`。将所有位反转并加以会得到`0b1111 1011` 为了寻找一个负数`-x`的补码,需要找到`x`的二进制表示,将所有位反转,之后加上1。例如,要表示`-5`(十进制),要先从5(十进制)开始,如果将其写成8位的形式它是`0b0000 0101`。将所有位反转并加1会得到`0b1111 1011`
在补码中,最左边的位相当于符号位。正数中它是0,负数中它是1。 在补码中,最左边的位相当于符号位。正数中它是0,负数中它是1。
...@@ -48,7 +48,7 @@ C语言中,这意味着表达式`12 & 10`值为8。 ...@@ -48,7 +48,7 @@ C语言中,这意味着表达式`12 & 10`值为8。
所以表达式`12 | 10`值为14。 所以表达式`12 | 10`值为14。
最后,`^`运算符执行“异或”运算,如果两个操作数其中有一个为1,而不是全部为1,结果为1。 最后,`^`运算符执行“异或”运算,如果两个操作数有且仅有一个为1,结果为1。
``` ```
1100 1100
...@@ -97,9 +97,9 @@ C语言同时提供了移位运算符,`<<`和`>>`,它可以将位向左或 ...@@ -97,9 +97,9 @@ C语言同时提供了移位运算符,`<<`和`>>`,它可以将位向左或
(-1) ** s * c * 2 ** q (-1) ** s * c * 2 ** q
``` ```
这几乎是正确的,但是有一点例外。浮点数通常为规格化的,所以小数点前方有一个数字。例如在10进制中,我们通常使用`2.998 * 10 ** 8`而不是`2998 * 10 ** 5`,或者任何其它等价的表示。在二进制中,规格化的浮点数通常在二进制小数点前有一个数字1。由于这个位置上的数字永远是1,我们可以将其从表示中去掉以节省空间。 这几乎是正确的,但是有一点例外。浮点数通常为规格化的,所以小数点前方有一个数字。例如在10进制中,我们通常使用`2.998 * 10 ** 8`而不是`2998 * 10 ** 5`,或者任何其它等价的表示。在二进制中,规格化的浮点数总是在二进制小数点前有一个数字1。由于这个位置上的数字永远是1,我们可以将其从表示中去掉以节省空间。
例如,十进制的13表示为`0b1101`,在浮点数中,它就是`1.011 * 2 ** 3`。所以指数为3,系数储存为101(加上20个零)。 例如,十进制的13表示为`0b1101`,在浮点数中,它就是`1.101 * 2 ** 3`。所以指数为3,系数储存为101(加上20个零)。
这几乎是正确的,但是指数以“偏移”储存。在32位的标准中,偏移是127,所以指数3应该储存为130。 这几乎是正确的,但是指数以“偏移”储存。在32位的标准中,偏移是127,所以指数3应该储存为130。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册