【问题标题】:The Art of Computer Programming, Vol 4, Fascicle 2 typo?计算机编程艺术,第 4 卷,分册 2 错字?
【发布时间】:2009-03-11 18:11:29
【问题描述】:

在第 5 页的底部是短语“将 k 更改为 k ⊕ (1j+1)2”。即使在二进制中,1 的任何幂都不是 1 吗?我想这一定是笔误。我向 Knuth 博士发送了一封电子邮件报告此事,但我预计几个月后不会收到回复。与此同时,我正试图弄清楚这应该是什么。

【问题讨论】:

  • 投票结束为“与编程无关”。呵呵,我的孩子。
  • 对于我们这些在我们面前没有副本的人,要弄清楚它应该是什么,我们需要更多信息
  • 我没想到 Dr. Knuth /used/ email...
  • Adrian:我想只有拥有这本书的人才会回答这个问题。
  • 奥术:是的,Knuth 博士于 90 年 1 月 1 日停止使用电子邮件。但是taocp中有报错地址。他的秘书将电子邮件打印出来并交给他。 www-cs-faculty.stanford.edu/~knuth/email.html

标签: knuth taocp


【解决方案1】:

这可以通过使用 (...)2 表示按位表示的约定来解决。 (1j+1)2 则仅由 j+1 个组成,而不是指代幂。您可以在第 8 页的 TAOCP 第 4 卷分册 1 中看到更明确的解释,例如:

如果 x 几乎是任何非零的 2 进数 整数,我们可以将其位写入 表格

x = (g01a10b)2

换句话说,x 由一些 任意(但无限)二进制字符串 g,后跟一个 0,然后是 由 a+1 个 1 后跟 b 个 0, 对于一些 a >= 0 和 b >= 0。

[我已将符号 alpha 替换为 g 以节省编码问题]

回到原来的查询; k ⊕(1j+1)2 等于 k ​​⊕ (2j+1 - 1) 暗示 (1j+1)2 = (2j+1 - 1):这成立是因为左边是有效位为 j+1(连续)1 的整数;右边是指数。例如,j =3:

(14)2 = (1111)2 = (24 - 1)

希望对您有所帮助。

【讨论】:

    【解决方案2】:

    可以在勘误页面上找到已知拼写错误的列表:

    http://www-cs-faculty.stanford.edu/~knuth/taocp.html

    您报告的错字不存在。如果确实是错字,您可能有资格从 Knuth 本人那里获得现金奖励。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2012-12-04
    • 1970-01-01
    相关资源
    最近更新 更多