Useful conversions
This article contains some useful conversion tables. Beware that we will omit the 0x prefix on hex numbers: it will be evident from context which base is intended.
Degrees and hex/binary angles
Conversion of degrees to binary angles in the two common ways, that give different answers. Table is produced using this script:
$ printf "%s\t%s\t%s\n" "d" "d * 2^16/360" "2^16/360 * d" ; for i in {0..360..5} ; do printf "%d\t%X\t\t%X\n" "$i" $(( "$i" * 0x10000 / 360 )) $(( 0x10000 / 360 * "$i" )) ; done
Small angles
d |
d * 2^16/360 |
2^16/360 * d |
| 0 |
0 |
0 |
| 1 |
B6 |
B6 |
| 2 |
16C |
16C |
| 3 |
222 |
222 |
| 4 |
2D8 |
2D8 |
| 5 |
38E |
38E |
| 6 |
444 |
444 |
| 7 |
4FA |
4FA |
| 8 |
5B0 |
5B0 |
| 9 |
666 |
666 |
| 10 |
71C |
71C |
| 11 |
7D2 |
7D2 |
| 12 |
888 |
888 |
| 13 |
93E |
93E |
| 14 |
9F4 |
9F4 |
| 15 |
AAA |
AAA |
| 16 |
B60 |
B60 |
| 17 |
C16 |
C16 |
| 18 |
CCC |
CCC |
| 19 |
D82 |
D82 |
| 20 |
E38 |
E38 |
| 21 |
EEE |
EEE |
| 22 |
FA4 |
FA4 |
| 23 |
105B |
105A |
| 24 |
1111 |
1110 |
| 25 |
11C7 |
11C6 |
| 26 |
127D |
127C |
| 27 |
1333 |
1332 |
| 28 |
13E9 |
13E8 |
| 29 |
149F |
149E |
| 30 |
1555 |
1554 |
Larger angles
d |
d * 2^16/360 |
2^16/360 * d |
| 0 |
0 |
0 |
| 5 |
38E |
38E |
| 10 |
71C |
71C |
| 15 |
AAA |
AAA |
| 20 |
E38 |
E38 |
| 25 |
11C7 |
11C6 |
| 30 |
1555 |
1554 |
| 35 |
18E3 |
18E2 |
| 40 |
1C71 |
1C70 |
| 45 |
2000 |
1FFE |
| 50 |
238E |
238C |
| 55 |
271C |
271A |
| 60 |
2AAA |
2AA8 |
| 65 |
2E38 |
2E36 |
| 70 |
31C7 |
31C4 |
| 75 |
3555 |
3552 |
| 80 |
38E3 |
38E0 |
| 85 |
3C71 |
3C6E |
| 90 |
4000 |
3FFC |
| 95 |
438E |
438A |
| 100 |
471C |
4718 |
| 105 |
4AAA |
4AA6 |
| 110 |
4E38 |
4E34 |
| 115 |
51C7 |
51C2 |
| 120 |
5555 |
5550 |
| 125 |
58E3 |
58DE |
| 130 |
5C71 |
5C6C |
| 135 |
6000 |
5FFA |
| 140 |
638E |
6388 |
| 145 |
671C |
6716 |
| 150 |
6AAA |
6AA4 |
| 155 |
6E38 |
6E32 |
| 160 |
71C7 |
71C0 |
| 165 |
7555 |
754E |
| 170 |
78E3 |
78DC |
| 175 |
7C71 |
7C6A |
| 180 |
8000 |
7FF8 |
| 185 |
838E |
8386 |
| 190 |
871C |
8714 |
| 195 |
8AAA |
8AA2 |
| 200 |
8E38 |
8E30 |
| 205 |
91C7 |
91BE |
| 210 |
9555 |
954C |
| 215 |
98E3 |
98DA |
| 220 |
9C71 |
9C68 |
| 225 |
A000 |
9FF6 |
| 230 |
A38E |
A384 |
| 235 |
A71C |
A712 |
| 240 |
AAAA |
AAA0 |
| 245 |
AE38 |
AE2E |
| 250 |
B1C7 |
B1BC |
| 255 |
B555 |
B54A |
| 260 |
B8E3 |
B8D8 |
| 265 |
BC71 |
BC66 |
| 270 |
C000 |
BFF4 |
| 275 |
C38E |
C382 |
| 280 |
C71C |
C710 |
| 285 |
CAAA |
CA9E |
| 290 |
CE38 |
CE2C |
| 295 |
D1C7 |
D1BA |
| 300 |
D555 |
D548 |
| 305 |
D8E3 |
D8D6 |
| 310 |
DC71 |
DC64 |
| 315 |
E000 |
DFF2 |
| 320 |
E38E |
E380 |
| 325 |
E71C |
E70E |
| 330 |
EAAA |
EA9C |
| 335 |
EE38 |
EE2A |
| 340 |
F1C7 |
F1B8 |
| 345 |
F555 |
F546 |
| 350 |
F8E3 |
F8D4 |
| 355 |
FC71 |
FC62 |
| 360 |
10000 |
FFF0 |
Similarly for small angles with a smaller increment:
Round decimal numbers in hex
printf "%s\t%s\n" "dec" "hex" ; for i in {0..100..5} ; do printf "%d\t%X\n" "$i" "$i" ; done
Small
| dec |
hex |
| 0 |
0 |
| 5 |
5 |
| 10 |
A |
| 15 |
F |
| 20 |
14 |
| 25 |
19 |
| 30 |
1E |
| 35 |
23 |
| 40 |
28 |
| 45 |
2D |
| 50 |
32 |
| 55 |
37 |
| 60 |
3C |
| 65 |
41 |
| 70 |
46 |
| 75 |
4B |
| 80 |
50 |
| 85 |
55 |
| 90 |
5A |
| 95 |
5F |
| 100 |
64 |
Medium
| dec |
hex |
| 100 |
64 |
| 150 |
96 |
| 200 |
C8 |
| 250 |
FA |
| 300 |
12C |
| 350 |
15E |
| 400 |
190 |
| 450 |
1C2 |
| 500 |
1F4 |
| 550 |
226 |
| 600 |
258 |
| 650 |
28A |
| 700 |
2BC |
| 750 |
2EE |
| 800 |
320 |
| 850 |
352 |
| 900 |
384 |
| 950 |
3B6 |
| 1000 |
3E8 |
Large
| dec |
hex |
| 1000 |
3E8 |
| 1500 |
5DC |
| 2000 |
7D0 |
| 2500 |
9C4 |
| 3000 |
BB8 |
| 3500 |
DAC |
| 4000 |
FA0 |
| 4500 |
1194 |
| 5000 |
1388 |
| 5500 |
157C |
| 6000 |
1770 |
| 6500 |
1964 |
| 7000 |
1B58 |
| 7500 |
1D4C |
| 8000 |
1F40 |
| 8500 |
2134 |
| 9000 |
2328 |
| 9500 |
251C |
| 10000 |
2710 |
| dec |
hex |
| 10000 |
2710 |
| 11000 |
2AF8 |
| 12000 |
2EE0 |
| 13000 |
32C8 |
| 14000 |
36B0 |
| 15000 |
3A98 |
| 16000 |
3E80 |
| 17000 |
4268 |
| 18000 |
4650 |
| 19000 |
4A38 |
| 20000 |
4E20 |
| 21000 |
5208 |
| 22000 |
55F0 |
| 23000 |
59D8 |
| 24000 |
5DC0 |
| 25000 |
61A8 |
| 26000 |
6590 |
| 27000 |
6978 |
| 28000 |
6D60 |
| 29000 |
7148 |
| 30000 |
7530 |
Shifts/powers of 2 in dec and hex
$ printf "%s\t%s\t%s\n" "n" "1 << n (hex)" "1 << n (dec)" ; for i in {0..15..1} ; do printf "%d\t%X\t\t%d\n" "$i" $(( 1 << "$i" )) $(( 1 << "$i" )) ; done
1 << n is the same as 2^n.
n |
1 << n (hex) |
1 << n (dec) |
| 0 |
1 |
1 |
| 1 |
2 |
2 |
| 2 |
4 |
4 |
| 3 |
8 |
8 |
| 4 |
10 |
16 |
| 5 |
20 |
32 |
| 6 |
40 |
64 |
| 7 |
80 |
128 |
| 8 |
100 |
256 |
| 9 |
200 |
512 |
| 10 |
400 |
1024 |
| 11 |
800 |
2048 |
| 12 |
1000 |
4096 |
| 13 |
2000 |
8192 |
| 14 |
4000 |
16384 |
| 15 |
8000 |
32768 |