Een normaal decimaal cijfer kan 10 verschillende waarden aannemen, namelijk 0 t/m 9.
Een hex-a-decimaal getal (hex betekent 6) kan 16 verschillende waarden hebben (grondtal 16).
De waarden van dit talstelsel zijn 0 t/m 9 en A t/m F.
De letters komen overeen met de getallen 10 t/m 15 volgens het decimale stelsel.
Dit talstelsel wordt toegepast om binaire getallen verkort weer te geven.
|
|
= Binaire byte (8 bits) | |||||||||
2 | + | D | = 2D Hexadecimaal getal |
Wat is er nu zo makkelijk aan hexadecimaal?
Als je een binair getal ziet, bijvoorbeeld %00110100, en je hakt dit binaire getal doormidden, dus 0011 en 0100,
dan kun je daar vrij snel de hexadecimale waarde uithalen.
Namelijk 0011 (=3) en 0100 (=4).
Dus de hexadecimale waarde van %00110100 = $34.
Een paar voorbeelden:
0011 0011 = $33
0100 0111 = $47
1111 1000 = $F8
Alleen de waarden A t/m E zul je aan moeten wennen, de F is alle bits aan, dus dat is makkelijk te onthouden.
Om uit een binair getal een decimaal getal te halen valt niet zomaar in één oogopslag te zien, omdat er geen enkel logisch verband tussen die getallen zit.
Uit 4 bits zijn 16 mogelijkheden van enen en nullen te maken, 0000 = 0, 0001 = 1, 0010 = 2...1111 = 15, zie de tabel onderaan.
Wat is BCD?
Binary Coded Decimal, is een vierbits code om de decimale cijfers 0 t/m 9 weer te geven (grondtal 10).
BCD telt gewoon zoals we dagelijks tellen in decimalen, alleen wordt dit nu binair weergegeven.
Het getal 31 bijvoorbeeld is binair %00011111, maar in BCD 0011 0001 (de '3' staat hier links, de '1' rechts), zie de tabel onderaan.
Omzetten van BCD naar decimaal in PIC Basic kan als volgt:
MyByte = ((MyBCD >> 4 ) * 10 ) + (MyBCD & 15 ) |
Of, als het dezelfde variabele moet blijven die alleen maar omgezet moet worden:
MyByte = ((MyByte >> 4 ) * 10 ) + (MyByte & 15 ) |
Omzetten van decimaal naar BCD in PIC Basic kan als volgt:
MyBCD = ((MyByte / 10 ) << 4 ) + (MyByte // 10 ) |
Of, als het dezelfde variabele moet blijven die alleen maar omgezet moet worden:
MyByte = ((MyByte / 10 ) << 4 ) + (MyByte // 10 ) |
Decimaal | Hex | Binair | BCD |
0 | 00 | 00000000 | 0000 0000 |
1 | 01 | 00000001 | 0000 0001 |
2 | 02 | 00000010 | 0000 0010 |
3 | 03 | 00000011 | 0000 0011 |
4 | 04 | 00000100 | 0000 0100 |
5 | 05 | 00000101 | 0000 0101 |
6 | 06 | 00000110 | 0000 0110 |
7 | 07 | 00000111 | 0000 0111 |
8 | 08 | 00001000 | 0000 1000 |
9 | 09 | 00001001 | 0000 1001 |
10 | 0A | 00001010 | 0001 0000 |
11 | 0B | 00001011 | 0001 0001 |
12 | 0C | 00001100 | 0001 0010 |
13 | 0D | 00001101 | 0001 0011 |
14 | 0E | 00001110 | 0001 0100 |
15 | 0F | 00001111 | 0001 0101 |
16 | 10 | 00010000 | 0001 0110 |
17 | 11 | 00010001 | 0001 0111 |
18 | 12 | 00010010 | 0001 1000 |
19 | 13 | 00010011 | 0001 1001 |
20 | 14 | 00010100 | 0010 0000 |
21 | 15 | 00010101 | 0010 0001 |
22 | 16 | 00010110 | 0010 0010 |
23 | 17 | 00010111 | 0010 0011 |
24 | 18 | 00011000 | 0010 0100 |
25 | 19 | 00011001 | 0010 0101 |
26 | 1A | 00011010 | 0010 0110 |
27 | 1B | 00011011 | 0010 0111 |
28 | 1C | 00011100 | 0010 1000 |
29 | 1D | 00011101 | 0010 1001 |
30 | 1E | 00011110 | 0011 0000 |
31 | 1F | 00011111 | 0011 0001 |
32 | 20 | 00100000 | 0011 0010 |
33 | 21 | 00100001 | 0011 0011 |
etc. | etc. | etc. | etc. |