20 дек. 2012 г.

Задачка: зеркально отразить битовое представление

Как можно зеркально отобразить битовое представление 8 битного числа ? 16 битного числа ?

Например,
M(12310) = M(011110112) = 110111102 = 22210.

внимание! комментарии содержат ответ.

2 комментария:

Анонимный комментирует...

https://gist.github.com/raw/4359090/a902f6be264d55454de06edde8d57b271072fae2/bitrev.clj
Как-то так. Последовательно меняются местами соседние биты, потом пары итд.

Vladimir Dolzhenko комментирует...

@Анонимный

Браво, реализация на clojure заслуживает похвалы и уважения. Используете в рабочих целях или так, плюшками балуетесь ?

Конечно же идея не нова и детально изложена в Hacker's Delight 7-1