0%

CSAPP 学习笔记 2 信息的表示与处理

这一周看了第二章的剩余篇幅,关于整数运算以及浮点数。目前还未完全搞定,有很多习题待写。

整数运算

整数运算的分类主要有两个维度,一个是无符号数、有符号数,另一个是加法、乘法。

之前知道编译器会将乘法转化成加减法/移位,但始终不知所以然。这次通过阅读CSAPP,深入理解了它的原理,另外知道了还可以将除法转化为加减法/移位。

这一节讲得都是规律和证明,这里不再赘述。贴一张图进行总结,以方便以后回忆。

image-20190915234925595

浮点数

阅读完这一节后,对于浮点数的表示、运算、舍入等有了更深入的理解。

其中,有的地方一开始不是很理解,当弄懂后,觉得这些设计很优雅、很聪明。

比如,对于IEEE非规范值得设计不是很理解,为什么要增加复杂性呢。后来,明白了非规格值的设计,使得0的表示很加自然且靠近0的浮点数分布得更均匀。

比如,一开始不太明白为什么要有偶数舍入法,直接四舍五入不行吗。后来,明白了偶数舍入法是对四舍五入的一种改进,避免了舍入所造成的统计误差。

还有浮点的运算,不遵循结合律,这是之前没有注意到但也是十分重要的知识点。

image-20190916000251225

(全文完)