这一周看了第二章的剩余篇幅,关于整数运算以及浮点数。目前还未完全搞定,有很多习题待写。
整数运算
整数运算的分类主要有两个维度,一个是无符号数、有符号数,另一个是加法、乘法。
之前知道编译器会将乘法转化成加减法/移位,但始终不知所以然。这次通过阅读CSAPP,深入理解了它的原理,另外知道了还可以将除法转化为加减法/移位。
这一节讲得都是规律和证明,这里不再赘述。贴一张图进行总结,以方便以后回忆。
浮点数
阅读完这一节后,对于浮点数的表示、运算、舍入等有了更深入的理解。
其中,有的地方一开始不是很理解,当弄懂后,觉得这些设计很优雅、很聪明。
比如,对于IEEE非规范值得设计不是很理解,为什么要增加复杂性呢。后来,明白了非规格值的设计,使得0的表示很加自然且靠近0的浮点数分布得更均匀。
比如,一开始不太明白为什么要有偶数舍入法,直接四舍五入不行吗。后来,明白了偶数舍入法是对四舍五入的一种改进,避免了舍入所造成的统计误差。
还有浮点的运算,不遵循结合律,这是之前没有注意到但也是十分重要的知识点。
(全文完)