\ произвести реверс бит указанного числа
REQUIRE FOR devel\~mOleg\lib\util\for-next.f
: B. BASE @ 2 BASE ! SWAP
0 <# 32 FOR # TILL #> TYPE
BASE ! ;
: revcell ( u --> u )
DUP 1 LSHIFT 0xAAAAAAAA AND SWAP 0x55555555 AND OR DUP CR B.
DUP 2 LSHIFT 0xCCCCCCCC AND SWAP 0x33333333 AND OR DUP CR B.
DUP 4 LSHIFT 0xF0F0F0F0 AND SWAP 0x0F0F0F0F AND OR DUP CR B.
DUP 8 LSHIFT 0xFF00FF00 AND SWAP 0x00FF00FF AND OR DUP CR B.
DUP 0x10 LSHIFT 0xFFFF0000 AND SWAP 0x0000FFFF AND OR DUP CR B.
;
\ для массива addr # произвести битовый реверс
: revarr ( addr # --> )
FOR DUP @ revcell OVER !
CELL +
TILL DROP ;
HEX 12345678 DUP B. CR revcell B.