计算机程序设计艺术,第4卷,分册2错字?

时间:2009-03-11 18:11:29

标签: knuth taocp

在第5页的底部是短语“将 k 更改为 k ⊕(1 j +1 )<子> 2 ”。即使在二进制中,对于任何仍为1的功率是不是1?我认为这一定是个错字。我发送了一封电子邮件给Knuth博士报告,但我不希望听到几个月。与此同时,我正试图找出应该是什么。

2 个答案:

答案 0 :(得分:4)

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

  

如果x几乎是任何非零2-adic   整数,我们可以写出它的位   形式

     

x =   (G01 10 B'/ SUP>)<子> 2

     换句话说,x由一些组成   任意(但无限)二进制字符串   g,接着是0,然后是   由+ 1个,然后是b零,   某些a>&gt; = 0且b&gt; = 0。

[我已用g代替符号alpha来保存编码问题]

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

(1 4 2 =(1111) 2 =(2 4 - 1)

希望有所帮助。

答案 1 :(得分:0)

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

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

您报告的错字不存在。如果它确实是一个错字,你可能有资格获得Knuth自己的现金奖励。