Paul Erdős, the roving ambassador of mathematics thought that God created "The Book" in which the most elegant proof of each mathematical theorem is written. I am sure God aslo has a book for the fastest and for the nicest Julia programs. Finding those programs would be our goal, if we had infinite time...
The problem with bit wizardry is that some of it is superfluous. For example, many modern CPUs have bit reversal in single machine instructions, because it is often needed, e.g. in FFT computations. Julia does not support them, yet. Rotational shifts are also missing. We can spend days with writing nice code for these just to see them becoming obsolete at a new Julia update. Still, we can go over an implement most of the algorithms from Jörg Arndt's book: Matters Computational (http://www.jjj.de/fxt/fxtbook.pdf). It has the most complete collection of low-level functions I have seen. It would be quite easy to code them up in Julia. But the question remains: do we want the nicest, the shortest or the fastest code, or the one with a reasonable combination of these features? Btw. The variations of bit reversal functions I added to my previous post can still be tweaked further: ~~~ function reflect1(n::Uint8) # Two '&' operators and some parentheses removed n = n >>> 4 | n << 4 n = n&0xcc >>> 2 | n&0x33 << 2 n & 0xaa >>> 1 | n & 0x55 << 1 end r4 = uint8([0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15]) function reflect2(n::Uint8) # 4-bit lookup table (if 8-bit table is too large) r4[n>>>4+1] | r4[(n&15)+1]<<4 end function reflect3(n::Uint8) # Building up the reverse bit-by-bit r = zero(Uint8) for i = 0:7 r = r<<1 | (n>>>i)&1 end r end function reflect4(n::Uint8) # Bits put together, no assignment n<<7 | (n>>>1)&1<<6 | (n>>>2)&1<<5 | (n>>>3)&1<<4 | (n>>>4)&1<<3 | (n>>>5)&1<<2 | (n>>>6)&1<<1 | n>>>7 end ~~~
