Искусство компьютерного программирования, том 4, опечатка 2 опечатка? - PullRequest
1 голос
/ 11 марта 2009

В нижней части страницы 5 есть фраза "изменяется k на k & oplus; (1 j + 1 ) 2 ». Разве 1 ​​в любой степени еще 1 даже в двоичном? Я думаю это опечатка. Я послал электронное письмо доктору Кнуту, чтобы сообщить об этом, но не ожидаю ответа в течение нескольких месяцев. А пока я пытаюсь понять, что это должно быть.

Ответы [ 2 ]

4 голосов
/ 03 июля 2009

Это можно решить, используя соглашение, что (...) 2 представляет побитовое представление. (1 j + 1 ) 2 тогда состоит исключительно из j + 1 единиц, а не относится к возведению в степень. Вы можете увидеть это соглашение более подробно объясненным в главе 4 TAOCP Том 1 на странице 8, например:

Если х почти любой ненулевой 2-адический целое число, мы можем записать его биты в форма

x = (G01 а * 1 013 * 10 B ) 2 * +1018 * другими словами, х состоит из некоторых произвольная (но бесконечная) двоичная строка г, за которым следует 0, за которым следует + 1 и следуют нули, для некоторых a> = 0 и b> = 0.

[Я заменил символ альфа на g, чтобы избежать проблем с кодировкой]

Возвращаясь к исходному запросу; 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)

Надеюсь, это поможет.

0 голосов
/ 11 марта 2009

Список известных опечаток можно найти на странице с ошибками:

http://www -cs-faculty.stanford.edu / ~ Кнут / taocp.html

Ваша заявленная опечатка отсутствует. Если это действительно опечатка, вы можете получить денежное вознаграждение от самого Кнута.

...