Last active
January 20, 2019 21:18
-
-
Save mtwilliams/4aec2d6003af0465375da2403e83f914 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#: Bits: Count @ Position High? Low? = Entry | |
00: 00000000: 00 @ 00 0 0 = 0x000 | |
01: 00000001: 01 @ 00 0 1 = 0x101 | |
02: 00000010: 01 @ 01 0 0 = 0x011 | |
03: 00000011: 02 @ 00 0 1 = 0x102 | |
04: 00000100: 01 @ 02 0 0 = 0x021 | |
05: 00000101: 01 @ 00 0 1 = 0x101 | |
06: 00000110: 02 @ 01 0 0 = 0x012 | |
07: 00000111: 03 @ 00 0 1 = 0x103 | |
08: 00001000: 01 @ 03 0 0 = 0x031 | |
09: 00001001: 01 @ 00 0 1 = 0x101 | |
0a: 00001010: 01 @ 01 0 0 = 0x011 | |
0b: 00001011: 02 @ 00 0 1 = 0x102 | |
0c: 00001100: 02 @ 02 0 0 = 0x022 | |
0d: 00001101: 02 @ 02 0 0 = 0x022 | |
0e: 00001110: 03 @ 01 0 0 = 0x013 | |
0f: 00001111: 04 @ 00 0 1 = 0x104 | |
10: 00010000: 01 @ 04 0 0 = 0x041 | |
11: 00010001: 01 @ 00 0 1 = 0x101 | |
12: 00010010: 01 @ 01 0 0 = 0x011 | |
13: 00010011: 02 @ 00 0 1 = 0x102 | |
14: 00010100: 01 @ 02 0 0 = 0x021 | |
15: 00010101: 01 @ 00 0 1 = 0x101 | |
16: 00010110: 02 @ 01 0 0 = 0x012 | |
17: 00010111: 03 @ 00 0 1 = 0x103 | |
18: 00011000: 02 @ 03 0 0 = 0x032 | |
19: 00011001: 02 @ 03 0 0 = 0x032 | |
1a: 00011010: 02 @ 03 0 0 = 0x032 | |
1b: 00011011: 02 @ 00 0 1 = 0x102 | |
1c: 00011100: 03 @ 02 0 0 = 0x023 | |
1d: 00011101: 03 @ 02 0 0 = 0x023 | |
1e: 00011110: 04 @ 01 0 0 = 0x014 | |
1f: 00011111: 05 @ 00 0 1 = 0x105 | |
20: 00100000: 01 @ 05 0 0 = 0x051 | |
21: 00100001: 01 @ 00 0 1 = 0x101 | |
22: 00100010: 01 @ 01 0 0 = 0x011 | |
23: 00100011: 02 @ 00 0 1 = 0x102 | |
24: 00100100: 01 @ 02 0 0 = 0x021 | |
25: 00100101: 01 @ 00 0 1 = 0x101 | |
26: 00100110: 02 @ 01 0 0 = 0x012 | |
27: 00100111: 03 @ 00 0 1 = 0x103 | |
28: 00101000: 01 @ 03 0 0 = 0x031 | |
29: 00101001: 01 @ 00 0 1 = 0x101 | |
2a: 00101010: 01 @ 01 0 0 = 0x011 | |
2b: 00101011: 02 @ 00 0 1 = 0x102 | |
2c: 00101100: 02 @ 02 0 0 = 0x022 | |
2d: 00101101: 02 @ 02 0 0 = 0x022 | |
2e: 00101110: 03 @ 01 0 0 = 0x013 | |
2f: 00101111: 04 @ 00 0 1 = 0x104 | |
30: 00110000: 02 @ 04 0 0 = 0x042 | |
31: 00110001: 02 @ 04 0 0 = 0x042 | |
32: 00110010: 02 @ 04 0 0 = 0x042 | |
33: 00110011: 02 @ 00 0 1 = 0x102 | |
34: 00110100: 02 @ 04 0 0 = 0x042 | |
35: 00110101: 02 @ 04 0 0 = 0x042 | |
36: 00110110: 02 @ 01 0 0 = 0x012 | |
37: 00110111: 03 @ 00 0 1 = 0x103 | |
38: 00111000: 03 @ 03 0 0 = 0x033 | |
39: 00111001: 03 @ 03 0 0 = 0x033 | |
3a: 00111010: 03 @ 03 0 0 = 0x033 | |
3b: 00111011: 03 @ 03 0 0 = 0x033 | |
3c: 00111100: 04 @ 02 0 0 = 0x024 | |
3d: 00111101: 04 @ 02 0 0 = 0x024 | |
3e: 00111110: 05 @ 01 0 0 = 0x015 | |
3f: 00111111: 06 @ 00 0 1 = 0x106 | |
40: 01000000: 01 @ 06 0 0 = 0x061 | |
41: 01000001: 01 @ 00 0 1 = 0x101 | |
42: 01000010: 01 @ 01 0 0 = 0x011 | |
43: 01000011: 02 @ 00 0 1 = 0x102 | |
44: 01000100: 01 @ 02 0 0 = 0x021 | |
45: 01000101: 01 @ 00 0 1 = 0x101 | |
46: 01000110: 02 @ 01 0 0 = 0x012 | |
47: 01000111: 03 @ 00 0 1 = 0x103 | |
48: 01001000: 01 @ 03 0 0 = 0x031 | |
49: 01001001: 01 @ 00 0 1 = 0x101 | |
4a: 01001010: 01 @ 01 0 0 = 0x011 | |
4b: 01001011: 02 @ 00 0 1 = 0x102 | |
4c: 01001100: 02 @ 02 0 0 = 0x022 | |
4d: 01001101: 02 @ 02 0 0 = 0x022 | |
4e: 01001110: 03 @ 01 0 0 = 0x013 | |
4f: 01001111: 04 @ 00 0 1 = 0x104 | |
50: 01010000: 01 @ 04 0 0 = 0x041 | |
51: 01010001: 01 @ 00 0 1 = 0x101 | |
52: 01010010: 01 @ 01 0 0 = 0x011 | |
53: 01010011: 02 @ 00 0 1 = 0x102 | |
54: 01010100: 01 @ 02 0 0 = 0x021 | |
55: 01010101: 01 @ 00 0 1 = 0x101 | |
56: 01010110: 02 @ 01 0 0 = 0x012 | |
57: 01010111: 03 @ 00 0 1 = 0x103 | |
58: 01011000: 02 @ 03 0 0 = 0x032 | |
59: 01011001: 02 @ 03 0 0 = 0x032 | |
5a: 01011010: 02 @ 03 0 0 = 0x032 | |
5b: 01011011: 02 @ 00 0 1 = 0x102 | |
5c: 01011100: 03 @ 02 0 0 = 0x023 | |
5d: 01011101: 03 @ 02 0 0 = 0x023 | |
5e: 01011110: 04 @ 01 0 0 = 0x014 | |
5f: 01011111: 05 @ 00 0 1 = 0x105 | |
60: 01100000: 02 @ 05 0 0 = 0x052 | |
61: 01100001: 02 @ 05 0 0 = 0x052 | |
62: 01100010: 02 @ 05 0 0 = 0x052 | |
63: 01100011: 02 @ 00 0 1 = 0x102 | |
64: 01100100: 02 @ 05 0 0 = 0x052 | |
65: 01100101: 02 @ 05 0 0 = 0x052 | |
66: 01100110: 02 @ 01 0 0 = 0x012 | |
67: 01100111: 03 @ 00 0 1 = 0x103 | |
68: 01101000: 02 @ 05 0 0 = 0x052 | |
69: 01101001: 02 @ 05 0 0 = 0x052 | |
6a: 01101010: 02 @ 05 0 0 = 0x052 | |
6b: 01101011: 02 @ 00 0 1 = 0x102 | |
6c: 01101100: 02 @ 02 0 0 = 0x022 | |
6d: 01101101: 02 @ 02 0 0 = 0x022 | |
6e: 01101110: 03 @ 01 0 0 = 0x013 | |
6f: 01101111: 04 @ 00 0 1 = 0x104 | |
70: 01110000: 03 @ 04 0 0 = 0x043 | |
71: 01110001: 03 @ 04 0 0 = 0x043 | |
72: 01110010: 03 @ 04 0 0 = 0x043 | |
73: 01110011: 03 @ 04 0 0 = 0x043 | |
74: 01110100: 03 @ 04 0 0 = 0x043 | |
75: 01110101: 03 @ 04 0 0 = 0x043 | |
76: 01110110: 03 @ 04 0 0 = 0x043 | |
77: 01110111: 03 @ 00 0 1 = 0x103 | |
78: 01111000: 04 @ 03 0 0 = 0x034 | |
79: 01111001: 04 @ 03 0 0 = 0x034 | |
7a: 01111010: 04 @ 03 0 0 = 0x034 | |
7b: 01111011: 04 @ 03 0 0 = 0x034 | |
7c: 01111100: 05 @ 02 0 0 = 0x025 | |
7d: 01111101: 05 @ 02 0 0 = 0x025 | |
7e: 01111110: 06 @ 01 0 0 = 0x016 | |
7f: 01111111: 07 @ 00 0 1 = 0x107 | |
80: 10000000: 01 @ 07 1 0 = 0x271 | |
81: 10000001: 01 @ 00 0 1 = 0x101 | |
82: 10000010: 01 @ 01 0 0 = 0x011 | |
83: 10000011: 02 @ 00 0 1 = 0x102 | |
84: 10000100: 01 @ 02 0 0 = 0x021 | |
85: 10000101: 01 @ 00 0 1 = 0x101 | |
86: 10000110: 02 @ 01 0 0 = 0x012 | |
87: 10000111: 03 @ 00 0 1 = 0x103 | |
88: 10001000: 01 @ 03 0 0 = 0x031 | |
89: 10001001: 01 @ 00 0 1 = 0x101 | |
8a: 10001010: 01 @ 01 0 0 = 0x011 | |
8b: 10001011: 02 @ 00 0 1 = 0x102 | |
8c: 10001100: 02 @ 02 0 0 = 0x022 | |
8d: 10001101: 02 @ 02 0 0 = 0x022 | |
8e: 10001110: 03 @ 01 0 0 = 0x013 | |
8f: 10001111: 04 @ 00 0 1 = 0x104 | |
90: 10010000: 01 @ 04 0 0 = 0x041 | |
91: 10010001: 01 @ 00 0 1 = 0x101 | |
92: 10010010: 01 @ 01 0 0 = 0x011 | |
93: 10010011: 02 @ 00 0 1 = 0x102 | |
94: 10010100: 01 @ 02 0 0 = 0x021 | |
95: 10010101: 01 @ 00 0 1 = 0x101 | |
96: 10010110: 02 @ 01 0 0 = 0x012 | |
97: 10010111: 03 @ 00 0 1 = 0x103 | |
98: 10011000: 02 @ 03 0 0 = 0x032 | |
99: 10011001: 02 @ 03 0 0 = 0x032 | |
9a: 10011010: 02 @ 03 0 0 = 0x032 | |
9b: 10011011: 02 @ 00 0 1 = 0x102 | |
9c: 10011100: 03 @ 02 0 0 = 0x023 | |
9d: 10011101: 03 @ 02 0 0 = 0x023 | |
9e: 10011110: 04 @ 01 0 0 = 0x014 | |
9f: 10011111: 05 @ 00 0 1 = 0x105 | |
a0: 10100000: 01 @ 05 0 0 = 0x051 | |
a1: 10100001: 01 @ 00 0 1 = 0x101 | |
a2: 10100010: 01 @ 01 0 0 = 0x011 | |
a3: 10100011: 02 @ 00 0 1 = 0x102 | |
a4: 10100100: 01 @ 02 0 0 = 0x021 | |
a5: 10100101: 01 @ 00 0 1 = 0x101 | |
a6: 10100110: 02 @ 01 0 0 = 0x012 | |
a7: 10100111: 03 @ 00 0 1 = 0x103 | |
a8: 10101000: 01 @ 03 0 0 = 0x031 | |
a9: 10101001: 01 @ 00 0 1 = 0x101 | |
aa: 10101010: 01 @ 01 0 0 = 0x011 | |
ab: 10101011: 02 @ 00 0 1 = 0x102 | |
ac: 10101100: 02 @ 02 0 0 = 0x022 | |
ad: 10101101: 02 @ 02 0 0 = 0x022 | |
ae: 10101110: 03 @ 01 0 0 = 0x013 | |
af: 10101111: 04 @ 00 0 1 = 0x104 | |
b0: 10110000: 02 @ 04 0 0 = 0x042 | |
b1: 10110001: 02 @ 04 0 0 = 0x042 | |
b2: 10110010: 02 @ 04 0 0 = 0x042 | |
b3: 10110011: 02 @ 00 0 1 = 0x102 | |
b4: 10110100: 02 @ 04 0 0 = 0x042 | |
b5: 10110101: 02 @ 04 0 0 = 0x042 | |
b6: 10110110: 02 @ 01 0 0 = 0x012 | |
b7: 10110111: 03 @ 00 0 1 = 0x103 | |
b8: 10111000: 03 @ 03 0 0 = 0x033 | |
b9: 10111001: 03 @ 03 0 0 = 0x033 | |
ba: 10111010: 03 @ 03 0 0 = 0x033 | |
bb: 10111011: 03 @ 03 0 0 = 0x033 | |
bc: 10111100: 04 @ 02 0 0 = 0x024 | |
bd: 10111101: 04 @ 02 0 0 = 0x024 | |
be: 10111110: 05 @ 01 0 0 = 0x015 | |
bf: 10111111: 06 @ 00 0 1 = 0x106 | |
c0: 11000000: 02 @ 06 1 0 = 0x262 | |
c1: 11000001: 02 @ 06 1 0 = 0x262 | |
c2: 11000010: 02 @ 06 1 0 = 0x262 | |
c3: 11000011: 02 @ 00 0 1 = 0x102 | |
c4: 11000100: 02 @ 06 1 0 = 0x262 | |
c5: 11000101: 02 @ 06 1 0 = 0x262 | |
c6: 11000110: 02 @ 01 0 0 = 0x012 | |
c7: 11000111: 03 @ 00 0 1 = 0x103 | |
c8: 11001000: 02 @ 06 1 0 = 0x262 | |
c9: 11001001: 02 @ 06 1 0 = 0x262 | |
ca: 11001010: 02 @ 06 1 0 = 0x262 | |
cb: 11001011: 02 @ 00 0 1 = 0x102 | |
cc: 11001100: 02 @ 02 0 0 = 0x022 | |
cd: 11001101: 02 @ 02 0 0 = 0x022 | |
ce: 11001110: 03 @ 01 0 0 = 0x013 | |
cf: 11001111: 04 @ 00 0 1 = 0x104 | |
d0: 11010000: 02 @ 06 1 0 = 0x262 | |
d1: 11010001: 02 @ 06 1 0 = 0x262 | |
d2: 11010010: 02 @ 06 1 0 = 0x262 | |
d3: 11010011: 02 @ 00 0 1 = 0x102 | |
d4: 11010100: 02 @ 06 1 0 = 0x262 | |
d5: 11010101: 02 @ 06 1 0 = 0x262 | |
d6: 11010110: 02 @ 01 0 0 = 0x012 | |
d7: 11010111: 03 @ 00 0 1 = 0x103 | |
d8: 11011000: 02 @ 03 0 0 = 0x032 | |
d9: 11011001: 02 @ 03 0 0 = 0x032 | |
da: 11011010: 02 @ 03 0 0 = 0x032 | |
db: 11011011: 02 @ 00 0 1 = 0x102 | |
dc: 11011100: 03 @ 02 0 0 = 0x023 | |
dd: 11011101: 03 @ 02 0 0 = 0x023 | |
de: 11011110: 04 @ 01 0 0 = 0x014 | |
df: 11011111: 05 @ 00 0 1 = 0x105 | |
e0: 11100000: 03 @ 05 1 0 = 0x253 | |
e1: 11100001: 03 @ 05 1 0 = 0x253 | |
e2: 11100010: 03 @ 05 1 0 = 0x253 | |
e3: 11100011: 03 @ 05 1 0 = 0x253 | |
e4: 11100100: 03 @ 05 1 0 = 0x253 | |
e5: 11100101: 03 @ 05 1 0 = 0x253 | |
e6: 11100110: 03 @ 05 1 0 = 0x253 | |
e7: 11100111: 03 @ 00 0 1 = 0x103 | |
e8: 11101000: 03 @ 05 1 0 = 0x253 | |
e9: 11101001: 03 @ 05 1 0 = 0x253 | |
ea: 11101010: 03 @ 05 1 0 = 0x253 | |
eb: 11101011: 03 @ 05 1 0 = 0x253 | |
ec: 11101100: 03 @ 05 1 0 = 0x253 | |
ed: 11101101: 03 @ 05 1 0 = 0x253 | |
ee: 11101110: 03 @ 01 0 0 = 0x013 | |
ef: 11101111: 04 @ 00 0 1 = 0x104 | |
f0: 11110000: 04 @ 04 1 0 = 0x244 | |
f1: 11110001: 04 @ 04 1 0 = 0x244 | |
f2: 11110010: 04 @ 04 1 0 = 0x244 | |
f3: 11110011: 04 @ 04 1 0 = 0x244 | |
f4: 11110100: 04 @ 04 1 0 = 0x244 | |
f5: 11110101: 04 @ 04 1 0 = 0x244 | |
f6: 11110110: 04 @ 04 1 0 = 0x244 | |
f7: 11110111: 04 @ 04 1 0 = 0x244 | |
f8: 11111000: 05 @ 03 1 0 = 0x235 | |
f9: 11111001: 05 @ 03 1 0 = 0x235 | |
fa: 11111010: 05 @ 03 1 0 = 0x235 | |
fb: 11111011: 05 @ 03 1 0 = 0x235 | |
fc: 11111100: 06 @ 02 1 0 = 0x226 | |
fd: 11111101: 06 @ 02 1 0 = 0x226 | |
fe: 11111110: 07 @ 01 1 0 = 0x217 | |
ff: 11111111: 08 @ 00 1 1 = 0x308 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
int main(void) { | |
for (unsigned n = 0; n <= 0xFF; ++n) { | |
unsigned char r = 0; | |
unsigned char i = 0; | |
for (unsigned char v = n; v; v &= v << 1) | |
r += 1, i = __builtin_ffs(v) - r; | |
char hi = (i+r == 8); | |
char lo = (i == 0); | |
unsigned packed = 0; | |
packed |= (unsigned)r; | |
packed |= (unsigned)i << 4; | |
packed |= (unsigned)lo << 8; | |
packed |= (unsigned)hi << 9; | |
printf("%02x: %c%c%c%c%c%c%c%c: %02x @ %02x %c %c = 0x%03x\n", n, (n & 0x80 ? '1' : '0'), | |
(n & 0x40 ? '1' : '0'), | |
(n & 0x20 ? '1' : '0'), | |
(n & 0x10 ? '1' : '0'), | |
(n & 0x08 ? '1' : '0'), | |
(n & 0x04 ? '1' : '0'), | |
(n & 0x02 ? '1' : '0'), | |
(n & 0x01 ? '1' : '0'), r, i, hi ? '1' : '0', lo ? '1' : '0', packed); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment