Hopefully some find this decimal-to-binary-string visualizer I made to be helpful in understanding how bit manipulation operators relate to base conversion via arithmetic :
Feeding in any unsigned int
up to 2^53 - 1
, it would generate both
The algebraic version of the binary string, which can be directly fed into bc
, Wolfram Alpha, most likely Excel too (haven't tested it), as well as
The purely bit manipulation version that's simply a series of bitwise OR paired with bit-shifts, which can be directly fed into C
/Perl
codes.
-- Note : in the algebraic one, the binary string is shown in big-endian MSB first notation, while the bit-shifting one is in little-endian LSB first.
-- Note : for visual clarity purposes, zeros have been blanked out.
function rev(__,_,___) {
(_ = length(__ = (___ = _ = "")__)) % length("__") &&
___ = substr(__, _--)
do ___ = ___ substr(__,_,
_>--_) substr(__,_,_>--_)
while(_)
return ___
}
function dec2bin_visualizer(__,_) {
return length(__ = (_ = "")__) <= ++_*_++ &&
(__ = __+!_) <= _ \
? (__)"\n"(__<_-- ? __ : (_)"<<"(_)) : \
(__ = (_ = index(__ = sprintf(\
(_=(_ = "2*(" )(_ = (_)_ (_)_) (_)_)_ (_)_ \
(_=(_ = "%+1.d)")(_ = (_)_ (_)_) (_)_)_ (_)_ "%+.d",
_ = int(__/= (_ += ++_)^(_^_^_+(_+_+_)^_)),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),_ = int(__+=__-=_),_ = int(__+=__-=_),
_ = int(__+=__-=_),
_ = int(__+=__-=_)), "(+")) \
? substr(__,!!_,_++) substr(__,++_) \
: substr((__)"", (__ = substr(__, index(__, ++_)))^!_,
(_ + ++_) * gsub("[)]", "&", __))__) "\n" \
substr(_ = "", (__ = rev(__))^_,
-gsub("[(][*][2]",
_ = "_", __) * gsub("[)]",
"(", __) * gsub(_,
")<<1", __) * gsub("1[+]",
"1|", __) * gsub(" +",_ = "", __)) ("\n")__
}
1 57885161
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) )+1)+1)+1) ) )+1)+1) )+1) ) ) ) ) )+1)+1)+1)+1) )+1) ) )+1
1|(((1|((1|(1|(1|(1|((((((1|((1|(1|(((1|(1|(1|((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
2 43112609
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) ) )+1) ) ) )+1)+1)+1) )+1)+1) ) ) )+1) )+1) ) ) ) )+1
1|(((((1|((1|((((1|(1|((1|(1|(1|((((1|(((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
3 42643801
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) ) ) )+1) )+1) )+1) )+1)+1) ) ) )+1) )+1) )+1)+1) ) )+1
1|(((1|(1|((1|((1|((((1|(1|((1|((1|((1|((((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
4 37156667
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) ) )+1)+1) )+1)+1) )+1)+1)+1)+1) )+1)+1)+1) ) )+1)+1)+1) )+1)+1
1|(1|((1|(1|(1|(((1|(1|(1|((1|(1|(1|(1|((1|(1|((1|(1|((((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
5 32582657
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1)+1)+1)+1) ) ) )+1) ) )+1) )+1)+1) ) ) ) ) ) ) ) ) )+1
1|((((((((((1|(1|((1|(((1|((((1|(1|(1|(1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
6 30402457
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1)+1) ) )+1)+1)+1)+1)+1)+1)+1) ) )+1)+1)+1)+1) ) )+1)+1) ) )+1
1|(((1|(1|(((1|(1|(1|(1|(((1|(1|(1|(1|(1|(1|(1|(((1|(1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
7 25964951
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) ) ) )+1)+1) ) ) ) )+1)+1) ) ) )+1)+1) ) )+1) )+1)+1)+1
1|(1|(1|((1|(((1|(1|((((1|(1|(((((1|(1|((((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
8 24036583
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1)+1) )+1)+1)+1) )+1)+1) ) ) )+1) ) )+1)+1)+1) ) )+1)+1)+1
1|(1|(1|(((1|(1|(1|(((1|((((1|(1|((1|(1|(1|((1|(1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
9 20996011
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) ) ) ) ) ) ) )+1) )+1)+1)+1)+1)+1)+1) )+1) )+1) )+1)+1
1|(1|((1|((1|((1|(1|(1|(1|(1|(1|((1|((((((((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
10 13466917
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) ) )+1)+1) )+1) )+1)+1)+1)+1)+1) )+1) ) )+1) ) )+1) )+1
1|((1|(((1|(((1|((1|(1|(1|(1|(1|((1|((1|(1|(((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
11 6972593
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) )+1) )+1) ) )+1)+1) ) )+1) ) )+1) )+1)+1) ) ) )+1
1|((((1|(1|((1|(((1|(((1|(1|(((1|((1|((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
12 3021377
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1)+1)+1) ) ) ) )+1)+1) )+1) ) )+1) ) ) ) ) )+1
1|((((((1|(((1|((1|(1|(((((1|(1|(1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
13 2976221
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1)+1) )+1) )+1)+1) )+1) ) )+1)+1)+1) )+1)+1)+1) )+1
1|((1|(1|(1|((1|(1|(1|(((1|((1|(1|((1|((1|(1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
14 1398269
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) )+1) )+1) )+1) )+1) )+1)+1)+1)+1)+1)+1)+1) )+1
1|((1|(1|(1|(1|(1|(1|(1|((1|((1|((1|((1|((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
15 1257787
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) )+1)+1) ) )+1)+1) ) ) )+1) ) )+1)+1)+1) )+1)+1
1|(1|((1|(1|(1|(((1|((((1|(1|(((1|(1|(((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
16 859433
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) )+1) ) ) )+1)+1)+1) )+1) ) )+1) )+1) ) )+1
1|(((1|((1|(((1|((1|(1|(1|((((1|((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
17 756839
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1)+1)+1) ) ) )+1)+1) ) ) )+1)+1) ) )+1)+1)+1
1|(1|(1|(((1|(1|((((1|(1|((((1|(1|(1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
18 216091
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) )+1) ) )+1)+1) ) ) ) ) )+1)+1) )+1)+1
1|(1|((1|(1|((((((1|(1|(((1|((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
19 132049
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) ) ) ) ) ) )+1)+1)+1)+1) )+1) ) ) )+1
1|((((1|((1|(1|(1|(1|((((((((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
20 110503
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) )+1) )+1)+1)+1)+1)+1) )+1) ) )+1)+1)+1
1|(1|(1|(((1|((1|(1|(1|(1|(1|((1|((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
21 86243
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) )+1) ) ) ) )+1)+1)+1) ) ) )+1)+1
1|(1|((((1|(1|(1|(((((1|((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
22 44497
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) )+1)+1) )+1)+1)+1) )+1) ) ) )+1
1|((((1|((1|(1|(1|((1|(1|((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
23 23209
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1)+1) )+1) )+1) )+1) )+1) ) )+1
1|(((1|((1|((1|((1|((1|(1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
24 21701
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) )+1) ) )+1)+1) ) ) )+1) )+1
1|((1|((((1|(1|(((1|((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
25 19937
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) )+1)+1) )+1)+1)+1)+1) ) ) ) )+1
1|(((((1|(1|(1|(1|((1|(1|(((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
26 11213
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) )+1) )+1)+1)+1)+1) ) )+1)+1) )+1
1|((1|(1|(((1|(1|(1|(1|((1|((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
27 9941
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) )+1)+1) )+1)+1) )+1) )+1) )+1
1|((1|((1|((1|(1|((1|(1|(((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
28 9689
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) )+1) )+1)+1)+1) )+1)+1) ) )+1
1|(((1|(1|((1|(1|(1|((1|(((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
29 4423
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) ) )+1) )+1) ) ) )+1)+1)+1
1|(1|(1|((((1|((1|((((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
30 4253
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) ) ) )+1) ) )+1)+1)+1) )+1
1|((1|(1|(1|(((1|(((((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
31 3217
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1)+1) ) )+1) ) )+1) ) ) )+1
1|((((1|(((1|(((1|(1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
32 2281
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) ) )+1)+1)+1) )+1) ) )+1
1|(((1|((1|(1|(1|((((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
33 2203
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) ) )+1) ) )+1)+1) )+1)+1
1|(1|((1|(1|(((1|((((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
34 1279
2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) )+1)+1)+1)+1)+1)+1)+1)+1
1|(1|(1|(1|(1|(1|(1|(1|(((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
35 607
2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) )+1) )+1)+1)+1)+1)+1
1|(1|(1|(1|(1|((1|(((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
36 521
2*(2*(2*(2*(2*(2*(2*(2*(2*(1) ) ) ) ) )+1) ) )+1
1|(((1|((((((1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1)<<1
37 127
2*(2*(2*(2*(2*(2*(1)+1)+1)+1)+1)+1)+1
1|(1|(1|(1|(1|(1|(1)<<1)<<1)<<1)<<1)<<1)<<1
38 107
2*(2*(2*(2*(2*(2*(1)+1) )+1) )+1)+1
1|(1|((1|((1|(1)<<1)<<1)<<1)<<1)<<1)<<1
39 89
2*(2*(2*(2*(2*(2*(1) )+1)+1) ) )+1
1|(((1|(1|((1)<<1)<<1)<<1)<<1)<<1)<<1
40 61
2*(2*(2*(2*(2*(1)+1)+1)+1) )+1
1|((1|(1|(1|(1)<<1)<<1)<<1)<<1)<<1
41 31
2*(2*(2*(2*(1)+1)+1)+1)+1
1|(1|(1|(1|(1)<<1)<<1)<<1)<<1
42 19
2*(2*(2*(2*(1) ) )+1)+1
1|(1|(((1)<<1)<<1)<<1)<<1
43 17
2*(2*(2*(2*(1) ) ) )+1
1|((((1)<<1)<<1)<<1)<<1
44 13
2*(2*(2*(1)+1) )+1
1|((1|(1)<<1)<<1)<<1
45 7
2*(2*(1)+1)+1
1|(1|(1)<<1)<<1
46 5
2*(2*(1) )+1
1|((1)<<1)<<1
47 3
2*(1)+1
1|(1)<<1
48 2
2
1<<1