Hacker's Delight

书评:Hacker's Delight 作者:Henry S. Warren, Jr.
Boston, Pearson Education, Inc., 2003
ISBN: 0-201-91465-4
39.99 美元 (精装)
Hacker's Delight 是一本学习如何编写高效代码的宝藏。 在 16 个章节和两个附录中,通过大量的 C 代码和图形示例,以及支持这些技术的数学理论,阐述了极其巧妙的算法。
引言描述了一个指令集和执行效率模型,本书的其余部分都基于此。 这为评估大多数现代计算机上的计算效率提供了一种有用的方法。 然后,为一章关于围绕位级表示的许多小问题奠定了基础。 接下来,为涉及 2 的幂边界和算术边界的算法提供了一章。
接下来的三个章节描述了位级操作的有效技术,例如计算一个字中的位数,接下来的四个章节构成了一个关于一些关键算术运算符和函数的练习,包括有效的乘法和两种类型的整数除法。 接下来的一章涵盖了计算整数上的关键初等函数的算法。 这包括对数、指数以及平方根和立方根。
在某些特殊应用中,比特含义的替代表示可以提供优势。 有两章详细描述了不寻常的数字系统基数和格雷码。 例如,格雷码对于枚举有限状态机中的状态很有用,其中每个状态转换仅更改一位。
一章提供了对 Peano 曲线的一种变体的算法一瞥,称为希尔伯特曲线,它是一种有趣的相关的空间填充曲线。 希尔伯特曲线适用于递归算法,并且在表示坐标中的空间距离时具有一些位级计算优势。 这些算法在图像处理、渲染和压缩中很有用。
IEEE Std 754-1985 浮点算术的精彩总结包括一个仅使用整数运算比较浮点数的程序,用于计算可选可表示数字范围内前导数字数量的概率密度函数的公式,以及一个方便的杂项数字值表,以十六进制表示单精度和双精度浮点。
最后一章提供了使用 Willan 和 Wormell 公式计算素数的算法。 素数可用于哈希算法和密码学等。
两个附录提供了 4 位算术表和对牛顿函数逼近法的更详细描述。 算术表是一种方便的方式,可以设想在算法步骤中完成的工作,该算法步骤只是典型字长的一小部分。 参考书目也很丰富,列出了许多关于算术、数论和书中修饰的技术的原始论文。
您可以利用这些技术来掌握一些重要的内循环代码,同时享受算术算法之美。 作者是 IBM 的一位资深人士,他的编程技巧源于 IBM 704 到 PowerPC 四十年的经验。 这本书是为任何希望提高编译器开发、数据库、图像和信号处理算术以及代码库等领域关键算法效率的程序员提供的绝妙技术集合。
—Michael Baxter
电子邮件: mab@cruzio.com