Hoofdstuk – 4
Getalsystemen
Invoering
Bij het programmeren van gegevensherstel of andere programma's voor het oplossen van schijfproblemen is het heel gebruikelijk om met verschillende typen nummersystemen tegelijk te moeten werken om één taak of zelfs een heel klein deel van de taak uit te voeren. Denk bijvoorbeeld aan het berekenen van specifieke locaties van uitgebreide MBR's in termen van CHS (cilinders, koppen en sectoren). Deze locaties begeleiden de programmeur tijdens de gehele bewerking(en).
Waarschijnlijk ondervinden de meeste nieuwe programmeurs problemen of verwarring bij het omzetten van verschillende typen getallensystemen naar elkaar wanneer ze systeemprogrammering in assembler willen leren, waarbij het gebruik van binaire en hexadecimale getallensystemen verplicht is.
In dit hoofdstuk bespreken we veel belangrijke concepten, waaronder binaire, decimale en hexadecimale getallensystemen en ook binaire gegevensorganisatie, zoals de conversie van bits, nibbles, bytes, woorden en dubbele woorden, enz. en veel andere onderwerpen die verband houden met getallensystemen.
De meeste moderne computersystemen geven numerieke waarden niet weer met behulp van het decimale stelsel, maar gebruiken doorgaans het binaire stelsel of het tweecomplementstelsel.
Er zijn vier getallenstelsels die vaak worden gebruikt in de programmering: binair, octaal, decimaal en hexadecimaal . Meestal komen we echter binaire, decimale en hexadecimale getallenstelsels tegen. Deze getallensystemen verschillen afhankelijk van hun basisgetal.
Elk getallensysteem heeft zijn eigen basisgetal en representatiesymbool. Ik heb deze vier getallen in de volgende tabel weergegeven:
Naam van het getallensysteem |
Basisnummer |
Symbool dat wordt gebruikt om te vertegenwoordigen |
Binair |
2 |
B |
Octaal |
8 |
V of O |
Decimale |
10 |
D of niet |
Hexadecimaal |
16 |
TIJD |
Decimaal getallenstelsel
Het decimale getallenstelsel heeft het grondtal 10 en bevat de getallen 0 tot en met 9. Raak niet in de war, dit is het meestgebruikte getallenstelsel in ons dagelijks leven voor berekeningen. De vermogensgewogen waarden voor elke positie zijn:
Als ik het decimale getal 218 heb en ik wil het op de bovenstaande manier weergeven, dan wordt het getal 218 als volgt weergegeven:
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
Laten we nu eens naar een voorbeeld van een decimaal breukgetal kijken. Stel dat we het getal 821.128 hebben. Elk cijfer links van de decimale punt vertegenwoordigt een waarde van nul tot negen, en een macht van tien wordt weergegeven door de positie in het getal (beginnend bij 0).
De cijfers rechts van de decimale punt stellen de waarde van nul tot negen voor, vermenigvuldigd met een oplopende negatieve macht van tien. Laten we eens kijken hoe:
8*102+2*101+1*100+1*10-1+2*10-2+8*10-3
= 8 * 100 + 2 * 10 + 1 * 1 + 1 * 0,1 + 2 * 0,01 + 8 * 0,001
= 800 + 20 + 1 + 0,1 + 0,02 + 0,008
= 821.128
Binair getallensysteem
Tegenwoordig werken de meeste moderne computersystemen met binaire logica. De computer geeft waarden weer met behulp van twee spanningsniveaus die UIT of AAN aangeven met behulp van 0 en 1. Een spanning van 0 V wordt bijvoorbeeld meestal weergegeven door een logische 0, en een spanning van +3,3 V of +5 V wordt weergegeven door een logische 1. Met twee niveaus kunnen we dus precies twee verschillende waarden weergeven. Dit kunnen twee verschillende waarden zijn, maar volgens afspraak gebruiken we de waarden 0 en 1.
Omdat er een overeenkomst bestaat tussen de logische niveaus die een computer gebruikt en de twee cijfers die in het binaire getallenstelsel worden gebruikt, is het niet verrassend dat computers het binaire stelsel gebruiken.
Het binaire getallenstelsel werkt hetzelfde als het decimale getallenstelsel, behalve dat het binaire getallenstelsel het grondtal 2 gebruikt en alleen de cijfers 0 en 1. Als u een ander cijfer gebruikt, is het getal een ongeldig binair getal.
De gewogen waarden voor elk item worden als volgt weergegeven:
De volgende tabel toont de weergave van een binair getal in vergelijking met een decimaal getal:
Decimaal getal |
Binaire weergave van getallen |
0 |
0000 |
1 |
0001 |
2 |
0010 |
3 |
0011 |
4 |
0100 |
5 |
0101 |
6 |
0110 |
7 |
0111 |
8 |
1000 |
9 |
1001 |
10 |
1010 |
11 |
1011 |
12 |
1100 |
13 |
1101 |
14 |
1110 |
15 |
1111 |
Meestal worden bij decimale getallen elke drie decimale cijfers gescheiden door een komma om grotere getallen gemakkelijker leesbaar te maken. Het is bijvoorbeeld veel gemakkelijker om een getal 840.349.823 te lezen dan 840349823.
Geïnspireerd door hetzelfde idee, bestaat er een soortgelijke conventie voor binaire getallen, zodat het makkelijker is om ze te lezen. Bij binaire getallen voegen we echter om de vier cijfers een spatie toe, te beginnen bij het minst significante cijfer links van de komma.
Als de binaire waarde bijvoorbeeld 1010011001101011 is, wordt dit geschreven als 1010 0110 0110 1011.
Conversie van binaire naar decimale getallen
Om het binaire getal om te zetten naar het decimale getal, vermenigvuldigen we elk cijfer met zijn gewogen positie en tellen we elk van de gewogen waarden bij elkaar op. Bijvoorbeeld, de binaire waarde 1011 0101 vertegenwoordigt:
1*27 + 0*26 + 1*25 + 1*24 + 0*23 + 1*22 + 0*21 + 1*20 = 1 * 128 + 0 * 64 + 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 = 128 + 0 + 32 + 16 + 0 + 4 + 0 + 1 = 181
Decimaal naar binair getal conversie
Om een decimaal getal om te zetten naar het binaire getallenstelsel, is de algemene methode om het decimale getal te delen door 2. Als de rest 0 is, schrijf je aan de zijkant een 0. Als de rest 1 is, schrijf je een 1.
Dit proces wordt voortgezet door het quotiënt te delen door 2 en de vorige rest weg te laten totdat het quotiënt 0 is. Bij het uitvoeren van de deling worden de resten die het binaire equivalent van het decimale getal zullen vertegenwoordigen, geschreven beginnend bij het minst significante cijfer (rechts) en elk nieuw cijfer wordt geschreven naar het meer significante cijfer (links) van het vorige cijfer.
Laten we een voorbeeld nemen . Beschouw het getal 2671. De binaire conversie voor het getal 2671 is gegeven in de volgende tabel.
Divisie |
Quotiënt |
Rest |
Binair getal |
2671 / 2 |
1335 |
1 |
1 |
1335 / 2 |
667 |
1 |
11 |
667 / 2 |
333 |
1 |
111 |
333 / 2 |
166 |
1 |
1111 |
166 / 2 |
83 |
0 |
0 1111 |
83 / 2 |
41 |
1 |
10 1111 |
41 / 2 |
20 |
1 |
110 1111 |
20 / 2 |
10 |
0 |
0110 1111 |
10 / 2 |
5 |
0 |
0 0110 1111 |
5 / 2 |
2 |
1 |
10 0110 1111 |
2 / 2 |
1 |
0 |
010 0110 1111 |
1 / 2 |
0 |
1 |
1010 0110 1111 |
Deze tabel is bedoeld om elke stap van de conversie te verduidelijken. In de praktijk kunt u de volgende manier volgen om de resultaten te krijgen, om het conversieproces gemakkelijker en sneller te maken.
Laat 1980 een decimaal getal zijn dat omgezet moet worden in zijn binaire equivalent. Dan zullen we dit probleem oplossen op de volgende manier door de methode in de tabel te volgen:
Wanneer we de restanten rangschikken volgens de richting van de pijl, krijgen we het binaire getal dat gelijk is aan het decimale getal 1980 = 0111 1011 1100
Binaire getalformaten
Normaal gesproken schrijven we binaire getallen als een reeks bits. De "bits" is een afkorting voor "binaire cijfers" in een machine. Er zijn gedefinieerde formaatgrenzen voor deze bits. Deze formaatgrenzen zijn weergegeven in de volgende tabel:
Naam |
Grootte in bits |
Voorbeeld |
Beetje |
1 |
1 |
Knabbelen |
4 |
0101 |
Byte |
8 |
0000 0101 |
Woord |
16 |
0000 0000 0000 0101 |
Dubbel woord |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
We kunnen zoveel voorloopnullen toevoegen als we willen, zonder dat de waarde ervan in een getallenbasis verandert. Normaal gesproken voegen we echter voorloopnullen toe om het binaire getal aan te passen aan de gewenste groottegrens.
We kunnen bijvoorbeeld het getal 7 op verschillende manieren weergeven, zoals in de tabel is weergegeven:
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Beetje | | | | | | | | | | | | | | 1 | 1 | 1 |
Knabbelen | | | | | | | | | | | | | 0 | 1 | 1 | 1 |
Byte | | | | | | | | | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Woord | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |
Hierbij is de meest rechtse bit in een binair getal bitpositie nul en krijgt elke bit links daarvan het eerstvolgende bitnummer, zoals weergegeven in de bovenstaande tabel.
Bit zero wordt meestal de Least Significant Bit of LSB genoemd en de meest linkse bit wordt meestal de Most Significant Bit of MSB genoemd. Laat ons meer weten over deze representatieformaten:
Het Beetje
Een bit is de kleinste eenheid van data op een binaire computer. Een enkele bit kan slechts één waarde representeren, 0 of 1. Als u een bit gebruikt om een Booleaanse (True/False) waarde te representeren, dan representeert die bit true of false .
De Knabbel
De Nibble is vooral interessant als het gaat om getallenstelsels, BCD (Binary Coded Decimal) en/of hexadecimale getallen (grondtal 16).
Een nibble is een verzameling bits op een 4-bits grens. Er zijn vier bits nodig om een enkele BCD of hexadecimaal cijfer weer te geven. Met een nibble kunnen we tot 16 verschillende waarden weergeven.
In het geval van hexadecimale getallen worden de waarden 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E en F weergegeven met vier bits. BCD gebruikt tien verschillende cijfers (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) en vereist vier bits.
In feite kunnen zestien afzonderlijke waarden worden weergegeven met een nibble, maar hexadecimale en BCD-cijfers zijn de primaire items die we kunnen weergeven met een enkele nibble. De bitniveau-weergave van nibble is als volgt:
De Byte
De byte is de belangrijkste datastructuur die door de 80x86 microprocessor wordt gebruikt. Een byte bestaat uit acht bits en is het kleinste adresseerbare data-item in de microprocessor. Het hoofdgeheugen en de I/O-adressen in de computer zijn allemaal byte-adressen en dus is het kleinste item dat individueel kan worden benaderd door een 80x86 microprocessorprogramma een 8-bits waarde.
Om toegang te krijgen tot iets kleiners moet u de byte met de data lezen en de ongewenste bits maskeren. We zullen de programmering hiervoor in de volgende hoofdstukken uitvoeren.
Het belangrijkste gebruik van een byte is het bevatten van een tekencode. De bits in een byte zijn genummerd van bit nul (b0) tot en met zeven (b7) zoals hieronder aangegeven:
Bit 0 (b0) is de bit van de laagste orde of het minst significante bit en bit 7 (b7) is de bit van de hoogste orde of het meest significante bit van de byte.
Zoals we hier zien bevat een byte precies twee nibbles, waarbij de bits b0 tot en met b3 de nibble van lage orde vormen en de bits b4 tot en met b7 de nibble van hoge orde.
Omdat een byte precies twee nibbles bevat, hebben bytewaarden twee hexadecimale cijfers nodig.
Omdat de traditionele moderne computer een byte-adresseerbare machine is, blijkt het efficiënter om een hele byte te manipuleren dan een individuele bit of nibble.
Dit is de reden dat de meeste programmeurs een hele byte gebruiken om gegevenstypen weer te geven die niet meer dan 256 items nodig hebben.
Omdat een byte uit acht bits bestaat, kan deze 28 of 256 verschillende waarden vertegenwoordigen. Het maximale binaire getal van 8 bits kan namelijk 1111 1111 zijn, wat gelijk is aan 256 (decimaal). Daarom wordt een byte over het algemeen gebruikt om het volgende weer te geven:
- ongetekende numerieke waarden in het bereik van 0 tot 255
- getekende getallen in het bereik -128 tot +127
- ASCII-tekencodes
- En andere speciale gegevenstypen die niet meer dan 256 verschillende waarden vereisen, aangezien veel gegevenstypen minder dan 256 items hebben en acht bits in dat geval doorgaans voldoende zijn.
Het Woord
Een woord is een groep van 16 bits . Maar traditioneel wordt de grens voor een woord gedefinieerd als 16 bits of de grootte van de databus voor de processor en een dubbel woord is twee woorden. Daarom is een woord en een dubbel woord geen vaste grootte, maar varieert van systeem tot systeem, afhankelijk van de processor. Voor conceptueel lezen definiëren we een woord echter als twee bytes.
Wanneer we een woord op bitniveau zien, wordt het genummerd als de bits in een woord, beginnend bij bit nul (b0) tot en met vijftien (b15). De weergave op bitniveau is als volgt:
Waarbij bit 0 de LSB (Least Significant Bit) is en bit 15 de MSB (Most Significant Bit). Wanneer er behoefte is om naar de andere bits in een woord te verwijzen, wordt hun bitpositienummer gebruikt om ernaar te verwijzen.
Op deze manier bevat een woord precies twee bytes zodat van Bit b0 tot Bit b7 de low order byte vormen en bits b8 tot en met b15 de high order byte vormen. Met een woord van 16 bits kunnen we 216 (65536) verschillende waarden weergeven. Deze waarden kunnen de volgende zijn:
- De ongetekende numerieke waarden in het bereik van 0 tot 65.535.
- De ondertekende numerieke waarden in het bereik van -32.768 tot +32.767
- Elk gegevenstype met niet meer dan 65.536 waarden. Op deze manier worden woorden meestal gebruikt voor:
- 16-bits gehele getallen datawaarden
- 16-bits geheugenadressen
- Elk getallensysteem dat 16 bits of minder nodig heeft
Het dubbele woord
Een dubbel woord is precies volgens zijn naam en bestaat uit twee woorden. Daarom is een dubbel woord hoeveelheid 32 bits . Het dubbel woord kan ook worden verdeeld in een hoog orde woord en een laag orde woord, vier bytes, of acht nibbles etc.
Op deze manier kan het dubbele woord allerlei verschillende gegevens representeren. Het kan van het volgende zijn:
- Een ongetekend dubbel woord in het bereik van 0 tot 4.294.967.295,
- Een getekend dubbel woord in het bereik van -2.147.483.648 tot 2.147.483.647,
- Een 32-bits drijvende-kommawaarde
- Of andere gegevens waarvoor 32 bits of minder nodig is.
Octaal getallensysteem
Het Octaalgetalsysteem was populair in oude computersystemen, maar wordt tegenwoordig nog maar zelden gebruikt. We zullen echter een ideaal van het Octaalsysteem nemen, alleen voor kennis.
Het Octaal systeem is gebaseerd op het binaire systeem met een 3-bits grens. Het Octaal Getal Systeem gebruikt basis 8 en bevat alleen de cijfers 0 tot en met 7. Op deze manier zou elk ander cijfer het getal een ongeldig octaal getal maken.
De gewogen waarden voor elke positie zijn als volgt weergegeven in de tabel:
(basis)vermogen |
85 |
84 |
83 |
82 |
81 |
80 |
Waarde |
32768 |
4096 |
512 |
64 |
8 |
1 |
Binaire naar octale conversie
Om een geheel binair getal om te zetten naar een octaal getal volgen we de volgende twee stappen:
Splits eerst het binaire getal in 3-bits secties van de LSB naar de MSB . En converteer vervolgens het 3-bits binaire getal naar zijn octale equivalent. Laten we een voorbeeld nemen om het beter te begrijpen. Als we een binair getal hebben gegeven, bijvoorbeeld 11001011010001 om te converteren naar het octale getallensysteem, passen we de bovenstaande twee stappen als volgt toe op dit getal:
3-bits sectie van binair getal |
011 |
001 |
011 |
010 |
001 |
Gelijkwaardig getal |
3 |
1 |
3 |
2 |
1 |
Het octale getal, equivalent aan het binaire getal 11001011010001, is dus 31321.
Octaal naar binair conversie
Om een geheel octaal getal om te zetten naar het overeenkomstige binaire getal, volgen we de volgende twee stappen:
Converteer eerst het decimale getal naar zijn 3-bits binaire equivalent. Combineer vervolgens de 3-bits secties door de spaties te verwijderen. Laten we een voorbeeld nemen. Als we een octaal getal, geheel getal 31321(Q), moeten converteren naar zijn corresponderende binaire getal, passen we de bovenstaande twee stappen als volgt toe:
Gelijkwaardig getal |
3 |
1 |
3 |
2 |
1 |
3-bits sectie van binair getal |
011 |
001 |
011 |
010 |
001 |
Het binaire equivalent voor het octale getal 31321(Q) is dus 011 0010 1101 0001.
Octaal naar decimaal conversie
Om een octaal getal om te zetten naar een decimaal getal, vermenigvuldigen we de waarde op elke positie met het octale gewicht en tellen we elke waarde bij elkaar op.
Laten we een voorbeeld nemen om dit beter te begrijpen. Stel dat we een octaal getal 31321Q hebben dat omgezet moet worden naar het corresponderende decimale getal. Dan zullen we de volgende stappen volgen:
3*84 + 1*83 + 3*82 + 2*81 + 1*80 = 3*4096 + 1*512 + 3*64 + 2*8 + 1*1 = 12288 + 512 + 192 + 16 + 1 = 13009
Decimaal naar octaal conversie
Decimaal naar octaal omzetten is iets lastiger. De typische methode om van decimaal naar octaal om te zetten is herhaald delen door 8. Voor deze methode delen we het decimale getal door 8 en schrijven de rest aan de zijkant als het minst significante cijfer. Dit proces wordt voortgezet door het quotiënt door 8 te delen en de rest te schrijven totdat het quotiënt 0 is.
Bij het uitvoeren van de deling worden de resten, die het octale equivalent van het decimale getal vertegenwoordigen, geschreven vanaf het minst significante cijfer (rechts) en wordt elk nieuw cijfer geschreven tot aan het eerstvolgende significantere cijfer (links) van het vorige cijfer.
Laten we het beter begrijpen met een voorbeeld. Als we een decimaal getal hebben, bijvoorbeeld 13009 (we vonden dit decimale getal uit het bovenstaande voorbeeld en door het terug te converteren naar een octaal getal kunnen we ook het vorige voorbeeld controleren), dan is deze methode beschreven in de volgende tabel:
Divisie |
Quotiënt |
Rest |
Octaal getal |
13009 / 8 |
1626 |
1 |
1 |
1626 / 8 |
203 |
2 |
21 |
203 / 8 |
25 |
3 |
321 |
25 / 8 |
3 |
1 |
1321 |
3 / 8 |
0 |
3 |
31321 |
Zoals u kunt zien, zijn we terug bij het oorspronkelijke nummer. Dat is wat we zouden verwachten. Deze tabel was om de procedure te begrijpen. Laten we nu dezelfde conversie herhalen om de methode te begrijpen die in de praktijk moet worden gevolgd om het gemak van werken te krijgen en ook om tijd te besparen. Beide zijn in feite hetzelfde.
Wanneer we de restanten volgens de richting van de pijl rangschikken, krijgen we het octaalgetal 31321, zoals we verwachtten.
Hexadecimaal getallenstelsel
Hexadecimale getallen worden het meest gebruikt bij gegevensherstel of andere vormen van schijfprobleemoplossing of schijfanalyseprogrammering, omdat hexadecimale getallen de volgende twee functies bieden:
Hexadecimale getallen zijn erg compact. En het is makkelijk om van hex naar binair en binair naar hex te converteren. Wanneer we veel belangrijke dingen zullen berekenen zoals het aantal cilinders, koppen en sectoren van een harde schijf of we zullen harde schijf editor programma's gebruiken om verschillende karakteristieken en problemen te analyseren, zullen we een goede kennis van het Hex systeem nodig hebben. Het Hexadecimale systeem is gebaseerd op het binaire systeem met behulp van een Nibble of 4-bit grens.
Het hexadecimale getallensysteem gebruikt basis 16 en bevat alleen de cijfers 0 tot en met 9 en de letters A, B, C, D, E en F. We gebruiken H met het getal om elk hexadecimaal getal aan te duiden. De volgende tabel toont de representatie van verschillende getallensystemen, waarbij ze van elkaar worden onderscheiden:
Binair | Octaal | Decimale | Zeshoek |
0000B | 00Q | 00 | 00U |
0001B | 01Q | 01 | 01U |
0010B | 02Q | 02 | 02U |
0011B | 03Q | 03 | 03U |
0100B | 04Q | 04 | 04U |
0101B | 05Q | 05 | 05U |
0110B | 06Q | 06 | 06U |
0111B | 07Q | 07 | 07U |
1000B | 10Q | 08 | 08U |
1001B | 11Q | 09 | 09U |
1010B | 12Q | 10 | 0AH |
1011B | 13Q | 11 | 0BH |
1100B | 14Q | 12 | 0CH |
1101B | 15Q | 13 | 0DH |
1110B | 16Q | 14 | 0EH |
1111B | 17Q | 15 | 0FH |
1 0000B | 20Q | 16 | 10 uur |
Deze tabel bevat alle informatie die u ooit nodig kunt hebben om decimale waarden van 0 tot en met 16 om te rekenen van het ene getallental naar het andere.
De gewogen waarden voor elke positie voor hexadecimale getallen worden in de volgende tabel weergegeven:
(Basis)vermogen |
163 |
162 |
161 |
160 |
Waarde |
4096 |
256 |
16 |
1 |
Binaire naar hexadecimale conversie
Om een binair getal om te zetten naar hexadecimaal formaat, vult u eerst het binaire getal op met voorloopnullen aan de meest linkse kant om er zeker van te zijn dat het binaire getal veelvouden van vier bits bevat. Volg daarna de volgende twee stappen:
Eerst splitsen we het binaire getal in 4-bits secties van de LSB naar de MSB. En dan converteren we het 4-bits binaire getal naar zijn hexadecimale equivalent. Laten we een voorbeeld nemen om de methode beter te begrijpen. Stel dat we een binair getal hebben 100 1110 1101 0011 dat geconverteerd moet worden naar zijn corresponderende hexadecimale getal. Dan passen we de bovenstaande twee stappen toe zoals hieronder getoond:
4-bits binair getal sectie |
0100 |
1110 |
1101 |
0011 |
Hexadecimale waarde |
4 |
EN |
D |
3 |
De hexadecimale waarde die overeenkomt met het binaire getal 100 1110 1101 0011 is dus 4ED3.
Hexadecimaal naar binair conversie
Om een hexadecimaal getal om te zetten in een binair getal, volgen we de volgende twee stappen:
Converteer eerst het hexadecimale getal naar zijn 4-bits binaire equivalent. Combineer vervolgens de 4-bits secties door de spaties te verwijderen. Om de procedure beter te begrijpen, nemen we een voorbeeld van het bovenstaande hexadecimale getal, dat is 4ED3, en passen we deze twee stappen als volgt toe
Hexadecimale waarde |
4 |
EN |
D |
3 |
4-bits binair getal sectie |
0100 |
1110 |
1101 |
0011 |
Voor het hexadecimale getal 4ED3 krijgen we dus het overeenkomstige binaire getal = 0100 1110 1101 0011
Dit is het verwachte antwoord.
Hexadecimaal naar Decimaal Conversie Om van Hexadecimaal naar Decimaal te converteren vermenigvuldigen we de waarde in elke positie met het hexadecimale gewicht en tellen we elke waarde op. Laten we een voorbeeld nemen om de procedure beter te begrijpen. Veronderstel dat we een hexadecimaal getal 3ABE hebben dat moet worden geconverteerd naar het equivalente decimale getal. Dan is de procedure als volgt: 3*163 + A*162 + B*161 + E*160 = 3* 4096 + 10* 256 + 11*16 + 14 = 12288 + 2560 + 176 + 14 = 15038
Het equivalente decimale getal voor het hexadecimale getal 3ABE is dus 15038.
Decimaal naar hexadecimaal conversie
Om decimaal naar hexadecimaal om te zetten, is de typische methode herhaalde deling door 16. Voor deze methode delen we het decimale getal door 16 en schrijven we de rest aan de zijkant als het minst significante cijfer.
Dit proces wordt voortgezet door het quotiënt te delen door 16 en de rest te schrijven totdat het quotiënt 0 is. Bij het uitvoeren van de deling worden de resten die het hexadecimale equivalent van het decimale getal vertegenwoordigen, geschreven beginnend bij het minst significante cijfer (rechts) en elk nieuw cijfer wordt geschreven naar het volgende significantere cijfer (links) van het vorige cijfer.
Laten we het leren met een voorbeeld. We nemen het decimale getal 15038 dat we kregen na de conversie hierboven. Hiermee kunnen we ook de bovenstaande conversie controleren en vice versa.
Divisie |
Quotiënt |
Rest |
Hexadecimaal getal |
15038 / 16 |
939 |
14 ( EH ) |
EN |
939 / 16 |
58 |
11 ( BH ) |
ZIJN |
58 / 16 |
3 |
10 ( een H) |
ABE |
3 / 16 |
0 |
3 ( 3 Uur) |
03ABE |
Zo krijgen we het hexadecimale getal 03ABE H, equivalent aan het decimale getal 15038 en op deze manier zijn we terug bij het originele getal. Dat is wat we zouden verwachten.
De onderstaande tabel kan u helpen bij het snel zoeken naar de conversie van hexadecimale getallen naar decimale getallen en vice versa, in het bereik van 0 tot 255 decimalen.
In deze Square tabel zijn er 16 rijen, beginnend van 0 tot A en er zijn 16 kolommen die ook beginnen van 0 tot A. In deze tabel kunt u de decimale waarde vinden van elk hexadecimaal getal dat zich tussen het bereik van 0H tot FFH bevindt. Dit betekent dat de decimale waarde van het getal zich tussen het bereik van 0 tot 255 decimale getallen moet bevinden.
- De decimale waarde voor een hexadecimaal getal vinden in de bovenstaande tabel: In de bovenstaande tabel geeft het aantal rijen het eerste hexadecimale cijfer (linker hexadecimale cijfer) weer en het aantal kolommen het tweede hexadecimale cijfer (rechter hexadecimale cijfer) van het hexadecimale getal.
Laten we een hexadecimaal getal hebben, zeg ACH, dat moet worden omgezet in het equivalente decimale getal. Dan zien we de decimale waarde in de C-de kolom van de A-de rij in de tabel en krijgen we de decimale waarde 172, wat het equivalente decimale getal is voor het hexadecimale getal ACH.
- De hexadecimale waarde voor het decimale getal uit de bovenstaande tabel vinden: In de bovenstaande tabel vertegenwoordigt het aantal rijen het eerste hexadecimale cijfer (linker hexadecimale cijfer) en het aantal kolommen vertegenwoordigt het tweede hexadecimale cijfer (rechter hexadecimale cijfer) van het hexadecimale getal. Als u dus een decimaal getal wilt omzetten in een equivalent hexadecimaal getal, zoekt u het getal in de tabel op en vindt u de equivalente hexadecimale waarde als volgt:
Hexadecimale waarde voor het decimale getal = (rijnummer)(kolomnummer)
Als u bijvoorbeeld de equivalente hexadecimale waarde wilt vinden voor het decimale getal 154, kijk dan naar de locatie van het getal in de tabel. Het getal 154 staat in de 9e rij en de Ade kolom van de tabel. De equivalente hexadecimale waarde voor het decimale getal 154 is dus 9AH.
ASCII-code
De afkorting ASCII staat voor American Standard Code for Information Interchange. Het is een coderingsstandaard voor tekens, getallen en symbolen die hetzelfde is als de eerste 128 tekens van de ASCII-tekenset, maar verschilt van de overige tekens. Deze andere tekens worden meestal speciale ASCII-tekens of Extended-tekens genoemd die door IBM zijn gedefinieerd.
De eerste 32 tekens, die ASCII-codes 0 tot en met 1FH zijn, vormen een speciale set niet-afdrukbare tekens. Deze tekens worden de besturingstekens genoemd omdat deze tekens verschillende printer- en displaybesturingsbewerkingen uitvoeren in plaats van symbolen weer te geven. Deze tekens zijn vermeld in de ASCII-tekentabel in dit hoofdstuk. Deze besturingstekens hebben de volgende betekenissen:
NUL (nul):
Geen teken. Het wordt gebruikt om tijd of ruimte op het oppervlak (zoals het oppervlak van de platter) van het opslagapparaat in te vullen waar geen gegevens zijn. We gebruiken dit teken wanneer we programmeren voor data wipers (zowel destructief als niet-destructief) om de niet-toegewezen ruimte te wissen, zodat verwijderde gegevens door niemand of door geen enkel programma kunnen worden hersteld.
SOH (Begin van kop):
Dit teken wordt gebruikt om het begin van een kop aan te geven, die adres- of routegegevens kan bevatten.
TX (Begin van de tekst):
Dit teken wordt gebruikt om het begin van de tekst aan te geven en op deze manier wordt het ook gebruikt om het einde van de kop aan te geven.
ETX (einde tekst):
Dit teken wordt gebruikt om een tekst te beëindigen die met STX is gestart.
EOT (einde transmissie):
Dit teken geeft het einde van de transmissie aan, die mogelijk een of meer 'tests' met hun koppen omvatte.
ENQ (Onderzoek):
Het is een verzoek om een reactie van een extern station. Het is een verzoek aan een station om zichzelf te identificeren.
ACK (Erkenning):
Het is een karakter, verzonden door een ontvangend apparaat als een bevestigend antwoord op een schuurmachine. Het wordt gebruikt als een positief antwoord op pollingberichten.
BEL (Bell):
Het wordt gebruikt wanneer er behoefte is om menselijke aandacht te trekken. Het kan alarm- of aandachtsapparaten besturen. U kunt een belsignaal horen uit de luidsprekers, die zijn aangesloten op uw computer wanneer u dit teken typt in de opdrachtprompt zoals hieronder weergegeven:
C:\> Echo ^G
Hier wordt ^G afgedrukt met de toetsencombinatie Ctrl + G.
BS (Backspace):
Dit teken geeft aan dat het afdrukmechanisme of de weergavecursor één positie achteruit beweegt.
HT (Horizontaal tabblad):
Het geeft de beweging van het afdrukmechanisme of de weergavecursor aan naar de volgende vooraf toegewezen 'tab' of stoppositie.
LF (regeldoorvoer):
Geeft aan dat het afdrukmechanisme of de weergavecursor naar het begin van de volgende regel beweegt.
VT (Verticaal tabblad):
Het geeft de beweging van het afdrukmechanisme of de weergavecursor naar de volgende in een reeks vooraf toegewezen afdrukregels aan.
FF (Formulierfeed):
Het geeft de beweging van het afdrukmechanisme of de beeldschermcursor naar de startpositie van de volgende pagina, vanaf of op het volgende scherm aan.
CR (Carriage Return):
Het geeft de beweging van het afdrukmechanisme of de weergavecursor naar de startpositie van dezelfde regel aan.
ZO (Shift-Out):
Dit geeft aan dat de volgende codecombinaties worden geïnterpreteerd als buiten de standaardtekenset vallend totdat een Shift In-teken is bereikt.
Ik (Shift In):
Dit geeft aan dat de volgende codecombinaties moeten worden geïnterpreteerd volgens de standaardtekenset.
DLE (Data Link Escape):
Het is een teken dat de betekenis van een of meer aaneengesloten volgende tekens verandert. Het kan aanvullende controle bieden of het verzenden van datatekens met elke bitcombinatie toestaan.
DC1, DC2, DC3 en DC4 (apparaatbediening):
Dit zijn de tekens voor de besturing van hulpapparatuur of speciale terminalfuncties.
NAK (Negatieve Erkenning):
Het is een karakter dat door een ontvangend apparaat wordt verzonden als een negatief antwoord aan een verzender. Het wordt gebruikt als een negatief antwoord op een pollingbericht.
SYN (synchroon/inactief):
Het wordt gebruikt door een synchroon transmissiesysteem om synchronisatie te bereiken wanneer er geen gegevens worden verzonden. Een synchroon transmissiesysteem kan continu SYN-tekens verzenden.
ETB (einde transmissieblok):
Dit teken geeft het einde van een blok data aan voor communicatiedoeleinden. Het wordt gebruikt voor het blokkeren van data, waarbij de blokstructuur niet noodzakelijkerwijs gerelateerd is aan het verwerkingsformaat.
CAN (Annuleren): Hiermee wordt aangegeven dat de gegevens die eraan voorafgaan in een bericht of blok genegeerd moeten worden, meestal omdat er een fout is gedetecteerd.
EM (End of Medium): Hiermee wordt het fysieke uiteinde van een tape, het oppervlak (meestal van de schijf) of een ander medium, of het uiteinde van het benodigde of gebruikte deel van het medium aangeduid.
SUB (Substitute): Dit is een vervanging voor een teken dat onjuist of ongeldig blijkt te zijn.
ESC (Escape): Dit teken is bedoeld om de code uit te breiden, doordat het een bepaald aantal opeenvolgende tekens een alternatieve betekenis geeft.
FS (bestandsscheidingsteken): Dit teken wordt gebruikt als bestandsscheidingsteken.
GS (Group Separator): Wordt gebruikt als groepsscheidingsteken.
RS (Record Separator): Wordt gebruikt als recordscheidingsteken.
VS (Verenigde Scheidingsteken):
Het is een verenigd scheidingsteken.
De tweede groep van 32 ASCII-tekencodes heeft verschillende leestekens, speciale tekens en de numerieke cijfers. De meest opvallende tekens in deze groep zijn de volgende:
spatieteken (ASCII-code 20H) numerieke cijfers 0 tot en met 9 (ASCII-codes 30h tot en met 39h) wiskundige en logische symbolen
SP (ruimte):
Het is een niet-afdrukbaar teken dat wordt gebruikt om woorden te scheiden, het afdrukmechanisme te verplaatsen of de cursor één positie vooruit te zetten.
De derde groep van 32 ASCII-tekens is de groep van hoofdletters in het alfabet. De ASCII-codes voor de tekens A tot en met Z liggen in het bereik 41H tot en met 5AH. Omdat er slechts 26 verschillende alfabetische tekens zijn, bevatten de resterende zes codes verschillende speciale symbolen.
De vierde groep van 32 ASCII-tekencodes bestaat uit kleine alfabetische symbolen, vijf extra speciale symbolen en nog een besturingsteken om te verwijderen.
DEL (Verwijderen):
Het wordt gebruikt om ongewenste tekens te verwijderen.
Hierna zijn twee tabellen getoond, die de ASCII-codes en Extended Characters weergeven. De eerste tabel vertegenwoordigt alle vier groepen van verschillende typen tekens die zijn beschreven. Deze tabel is een datarepresentatie en ASCII-tabel zoals hierna wordt weergegeven:
Gegevensrepresentatie en ASCII-codetabel:
HEX | DECEMBER | CHR | CTRL |
---|
00 | 0 | NIETIG | ^@ |
01 | 1 | ZOH | ^Een |
02 | 2 | STX | ^B |
03 | 3 | ETX | ^C |
04 | 4 | einde van de werkdag | ^D |
05 | 5 | ENQ | ^E |
06 | 6 | ACK | ^F |
07 | 7 | BEL | ^G |
08 | 8 | onzin | ^H |
09 | 9 | HT | ^Ik |
0A | 10 | LF | ^J |
0B | 11 | VT | ^K |
0C | 12 | FF | ^L |
0D | 13 | CR | ^M |
0E | 14 | DUS | ^N |
0V | 15 | EN | ^O |
10 | 16 | VOLGENS | ^P |
11 | 17 | DC1 | ^V |
12 | 18 | DC2 | ^R |
13 | 19 | DC3 | ^S |
14 | 20 | DC4 | ^T |
15 | 21 | GEWILD | ^Jij |
16 | 22 | ZIJN | ^V |
17 | 23 | ETB | ^W |
18 | 24 | KAN | ^X |
19 | 25 | IN | ^En |
1A | 26 | SUB | ^Z |
1B | 27 | ESC |
1C | 28 | FS |
1D | 29 | GS |
1E | 30 | R.S. |
1V | 31 | ONS |
HEX | DECEMBER | CHR |
---|
20 | 32 | SP |
21 | 33 | ! |
22 | 34 | " |
23 | 35 | # |
24 | 36 | $ |
25 | 37 | % |
26 | 38 | & |
27 | 39 | ' |
28 | 40 | ( |
29 | 41 | ) |
2A | 42 | * |
2B | 43 | + |
2C | 44 | , |
2D | 45 | - |
2E | 46 | . |
2V | 47 | / |
30 | 48 | 0 |
31 | 49 | 1 |
32 | 50 | 2 |
33 | 51 | 3 |
34 | 52 | 4 |
35 | 53 | 5 |
36 | 54 | 6 |
37 | 55 | 7 |
38 | 56 | 8 |
39 | 57 | 9 |
3A | 58 | : |
3B | 59 | ; |
3C | 60 | < |
3D | 61 | = |
3E | 62 | > |
3V | 63 | ? |
HEX | DECEMBER | CHR |
---|
40 | 64 | @ |
41 | 65 | A |
42 | 66 | B |
43 | 67 | C |
44 | 68 | D |
45 | 69 | EN |
46 | 70 | F |
47 | 71 | G |
48 | 72 | H |
49 | 73 | I |
4A | 74 | J |
4B | 75 | Ik |
4C | 76 | Ik |
4D | 77 | M |
4E | 78 | N |
4V | 79 | DE |
50 | 80 | P |
51 | 81 | Q |
52 | 82 | R |
53 | 83 | S |
54 | 84 | T |
55 | 85 | IN |
56 | 86 | In |
57 | 87 | IN |
58 | 88 | X |
59 | 89 | EN |
5A | 90 | MET |
5B | 91 | [ |
5C | 92 | \ |
5D | 93 | ] |
5E | 94 | ^ |
5F | 95 | _ |
HEX | DECEMBER | CHR |
---|
60 | 96 | ` |
61 | 97 | A |
62 | 98 | B |
63 | 99 | C |
64 | 100 | D |
65 | 101 | En |
66 | 102 | F |
67 | 103 | G |
68 | 104 | H |
69 | 105 | i |
6A | 106 | J |
6B | 107 | ik |
6C | 108 | ik |
6D | 109 | M |
6E | 110 | N |
6F | 111 | de |
70 | 112 | P |
71 | 113 | Q |
72 | 114 | R |
73 | 115 | S |
74 | 116 | T |
75 | 117 | in |
76 | 118 | in |
77 | 119 | In |
78 | 120 | X |
79 | 121 | En |
7A | 122 | Met |
7B | 123 | {[} |
7C | 124 | | |
7D | 125 | } |
7E | 126 | ~ |
7V | 127 | VAN DE |
De volgende tabel toont de 128 speciale ASCII-tekens die vaak de uitgebreide ASCII-tekens worden genoemd:
HEX | DECEMBER | CHR |
---|
80 | 128 | Wat |
81 | 129 | u |
82 | 130 | En |
83 | 131 | A |
84 | 132 | A |
85 | 133 | heeft |
86 | 134 | naar |
87 | 135 | Wat |
88 | 136 | zullen |
89 | 137 | S |
8A | 138 | En |
8B | 139 | i |
8C | 140 | Q |
8D | 141 | in |
8E | 142 | A |
8V | 143 | Oh |
90 | 144 | EN |
91 | 145 | Oh |
92 | 146 | O, o |
93 | 147 | Paraplu |
94 | 148 | Hij |
95 | 149 | Nee |
96 | 150 | En |
97 | 151 | ù |
98 | 152 | ÿ |
99 | 153 | HIJ |
9A | 154 | Ik |
9B | 155 | ¢ |
9C | 156 | € |
9D | 157 | ¥ |
9E | 158 | ₧ |
9V | 159 | ƒ |
A0 | 160 | op |
A1 | 161 | in |
A2 | 162 | van |
A3 | 163 | eh |
A4 | 164 | N |
HEX | DECEMBER | CHR |
---|
A5 | 165 | N |
A6 | 166 | ª |
A7 | 167 | º |
A8 | 168 | ¿ |
A9 | 169 | ⌐ |
AA | 170 | ¬ |
AB | 171 | ½ |
AC | 172 | ¼ |
ADVERTENTIE | 173 | ¡ |
MAAR | 174 | « |
VAN | 175 | » |
B0 | 176 | ░ |
B1 | 177 | ▒ |
B2 | 178 | ▓ |
B3 | 179 | │ |
B4 | 180 | ┤ |
B5 | 181 | ╡ |
B6 | 182 | ╢ |
B7 | 183 | ╖ |
B8 | 184 | ╕ |
B9 | 185 | ╣ |
NIET | 186 | ║ |
BB | 187 | ╗ |
voor Christus | 188 | ╝ |
BD | 189 | ╜ |
ZIJN | 190 | ╛ |
Vriendje | 191 | ┐ |
C0 | 192 | └ |
C1 | 193 | ┴ |
C2 | 194 | ┬ |
C3 | 195 | ├ |
C4 | 196 | ─ |
C5 | 197 | ┼ |
C6 | 198 | ╞ |
C7 | 199 | ╟ |
C8 | 200 | ╚ |
C9 | 201 | ╔ |
HEX | DECEMBER | CHR |
---|
DAT | 202 | ╩ |
CB | 203 | ╦ |
CC | 204 | ╠ |
CD | 205 | ═ |
DIT | 206 | ╬ |
CF | 207 | ╧ |
D0 | 208 | ╨ |
D1 | 209 | ╤ |
D2 | 210 | ╥ |
D3 | 211 | ╙ |
D4 | 212 | ╘ |
D5 | 213 | ╒ |
D6 | 214 | ╓ |
D7 | 215 | ╫ |
D8 | 216 | ╪ |
D9 | 217 | ┘ |
EN | 218 | ┌ |
BD | 219 | █ |
District van Columbia | 220 | ▄ |
DD | 221 | ▌ |
VAN | 222 | ▐ |
DF | 223 | ▀ |
E0 | 224 | A |
E1 | 225 | SS |
E2 | 226 | Met |
E3 | 227 | N |
E4 | 228 | Met |
E5 | 229 | met |
E6 | 230 | µ |
E7 | 231 | T |
E8 | 232 | F |
E9 | 233 | I |
JA | 234 | Gedachte |
EB | 235 | G |
EU | 236 | ∞ |
ED | 237 | F |
EE | 238 | Ik |
HEXADECIMAAL | DECEMBER | HRC |
---|
ALS | 239 | ∩ |
F0 | 240 | ≡ |
Formule 1 | 241 | ± |
F2 | 242 | ≥ |
F3 | 243 | ≤ |
F4 | 244 | ⌠ |
F5 | 245 | ⌡ |
F6 | 246 | ÷ |
F7 | 247 | ≈ |
F8 | 248 | ° |
F9 | 249 | ∙ |
MAAR | 250 | · |
Facebook | 251 | √ |
FC | 252 | ⁿ |
FD | 253 | ² |
FE | 254 | ■ |
FF | 255 | |
Enkele belangrijke termen uit het getallensysteem die vaak worden gebruikt om gegevens weer te geven en op te slaan
De onderstaande tabel toont de verschillende voorvoegsels die als fractionele en als augmentatieve voorvoegsels worden gebruikt:
Byte:
De belangrijkste functie van een byte is het opslaan van een tekencode. We hebben dit al eerder besproken.
Kilobyte
Technisch gezien is een kilobyte gelijk aan 1024 bytes, maar het wordt vaak losjes gebruikt als synoniem voor 1000 bytes. In decimale systemen is kilo gelijk aan 1000, maar in binaire systemen is kilo gelijk aan 1024 (210).
Een kilobyte wordt meestal aangeduid met K of Kb. Om onderscheid te maken tussen decimaal K (1000) en binair K (1024), stelde de IEEE-standaard (Institute of Electrical and Electronics Engineers) voor om de conventie te volgen waarbij een kleine letter k wordt gebruikt voor decimaal kilo en een hoofdletter K voor binair kilo. Deze conventie wordt echter zeker niet strikt nageleefd.
Megabyte
Een megabyte wordt gebruikt om een gegevensopslag van 1.048.576 (220) bytes te beschrijven, maar wanneer het wordt gebruikt om gegevensoverdrachtssnelheden te beschrijven, zoals MB/s, verwijst het naar één miljoen bytes. Megabyte wordt meestal afgekort als M of MB.
Gigabyte
Een gigabyte wordt gebruikt om een opslag van 1.073.741.824 (230) bytes te beschrijven, en één gigabyte is gelijk aan 1.024 megabytes. Gigabyte wordt meestal afgekort tot G of GB.
Terabyte
Een terabyte is gelijk aan 1.099.511.627.776 (240) bytes, wat ongeveer 1 biljoen bytes is. Een terabyte wordt soms omschreven als 1012 (1.000.000.000.000) bytes, wat precies één biljoen is.
Petabyte
Een petabyte wordt beschreven als 1.125.899.906.842.624 (250) bytes. Een petabyte is gelijk aan 1.024 terabyte.
Exabyte
Een exabyte wordt beschreven als 1.152.921.504.606.846.976 (260) bytes. Een exabyte is gelijk aan 1.024 petabytes.
Zettabyte
Een zettabyte wordt beschreven als 1.180.591.620.717.411.303.424 (270) bytes, wat ongeveer 1021 (1.000.000.000.000.000.000.000) bytes is. Een zettabyte is gelijk aan 1,024 exabyte.
Yottabyte
Een Yottabyte wordt beschreven als 1.208.925.819.614.629.174.706.176 (280) bytes, wat ongeveer 1024 (1.000.000.000.000.000.000.000.000) bytes is. Yottabyte is gelijk aan 1,024 Zettabyte.
Algemene voorwaarden voor gegevensopslag
Er worden verschillende namen gebruikt om te verwijzen naar de eerder gegeven termen voor verschillende groepen databits. Enkele van de meest gebruikte staan in de volgende tabel:
Termijn |
Aantal bits |
Pagina / Nummer / Vlag |
1 |
Bijten / Bijten |
4 |
Byte/Karakter |
8 |
Woord |
16 |
Dubbel woord / Lang woord |
32 |
Heel lang woord |
64 |