This site is supported by donations to The OEIS Foundation.

"Email this user" was broken Aug 14 to 9am Aug 16. If you sent someone a message in this period, please send it again.

 Hints (Greetings from The On-Line Encyclopedia of Integer Sequences!)
 A160638 Bit-reversed 8-bit binary numbers. 3

%I

%S 0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,

%T 40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,

%U 228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156

%N Bit-reversed 8-bit binary numbers.

%C This sequence is found in computer programs that need to reverse the bits in a byte, typically during data compression or other bit-level encoding. a(n) is its own inverse: a(a(n)) = n.

%C A permutation of the integers 0-255. - _Jon Perry_, Oct 06 2012

%C a(n) is even for 0 <= n< 128 and odd for n <= 128 < 256. - _Jon Perry_, Oct 06 2012

%C a(m) + a(n) = a(m+n) when the binary representations of m and n have no bits in common. - _Jon Perry_, Oct 06 2012

%D Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002, pages 101-106.

%H Russ Cox, <a href="/A160638/b160638.txt">Table of n, a(n) for n = 0 .. 255</a> (full sequence)

%H Sean Anderson, <a href="http://graphics.stanford.edu/~seander/bithacks.html#BitReverseObvious">Bit Twiddling Hacks</a>

%H M. Beeler, R. W. Gosper, and R. Schroeppel, <a href="http://www.inwap.com/pdp10/hbaker/hakmem/hacks.html#item167">HAKMEM (MIT AI Memo 239, Feb. 29, 1972)</a>, Item 167.

%F a(n) = floor(A030101(n+256)/2). - _Reinhard Zumkeller_, Jan 12 2013

%e n = 1 = 00000001 binary, so a(1) = 10000000 binary = 128.

%e n = 29 = 00011101 binary, so a(29) = 10111000 binary = 184.

%t a[n_] := FromDigits[PadLeft[IntegerDigits[n, 2], 8] // Reverse, 2]; Table[a[n], {n, 0, 255}] (* _Jean-François Alcover_, Dec 26 2015 *)

%o (C) int a = 0; for(int i=0; i<8; i++) if(n & (1<<i)) a |= 1<<(7 - i);

%o (PARI) A160638(n)=binary(n+256)*vector(9,n,2^n)~\4 \\ - _M. F. Hasler_, Oct 07 2012

%o (PARI) A160638(n)=sum(i=0,7,bittest(n,7-i)<<i) \\ - _M. F. Hasler_, Oct 07 2012

%o import Data.Bits (testBit, setBit)

%o import Data.Word (Word8)

%o a160638 :: Word8 -> Word8

%o a160638 n = rev 0 0 where

%o rev 8 y = y

%o rev i y = rev (i + 1) (if testBit n i then setBit y (7 - i) else y)

%o -- _Reinhard Zumkeller_, Jan 12 2013

%Y Cf. A217589.

%K base,easy,fini,full,nonn,nice

%O 0,2

%A _Russ Cox_, May 21 2009

Lookup | Welcome | Wiki | Register | Music | Plot 2 | Demos | Index | Browse | More | WebCam
Contribute new seq. or comment | Format | Style Sheet | Transforms | Superseeker | Recent | More pages
The OEIS Community | Maintained by The OEIS Foundation Inc.