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 |