Hoofdstuk – 4
Nummersystemen
Inleiding
Het is heel gebruikelijk bij het programmeren van gegevensherstel of andere programma's voor het oplossen van problemen met schijven om de verschillende soorten nummersystemen tegelijkertijd te verwerken om een enkele taak uit te voeren of zelfs een heel klein stukje werk, zoals het berekenen van de specifieke locaties van uitgebreide MBR('s). ) in termen van CHS (Cilinders, Heads and Sectors) en deze locaties leiden de programmeur door de operatie(s).
Waarschijnlijk ondervinden de meeste beginnende programmeurs het probleem of de verwarring bij het converteren van verschillende soorten nummersystemen naar elkaar wanneer ze proberen om op assembler gebaseerd programmeren op systeemniveau te leren en wanneer het gebruik van binaire en hexadecimale nummersystemen een must is.
In deze hoofdstukken zullen we veel belangrijke concepten bespreken, waaronder de binaire, decimale, hexadecimale nummeringssystemen en evenals binaire gegevensorganisatie zoals conversie van bits, nibbles, bytes, woorden en dubbele woorden enz. en vele andere gerelateerde onderwerpen van nummerstelsels.
De meeste moderne computersystemen vertegenwoordigen geen numerieke waarden met het decimale stelsel, maar gebruiken over het algemeen een binair of 2-complement nummeringssysteem.
Er zijn vier basistalen die vaak worden gebruikt bij het programmeren, Binair, Octaal, Decimaal en Hexadecimaal. Meestal zullen we echter binaire, decimale en hexadecimale getalsystemen tegenkomen. Deze nummerstelsels zijn gedifferentieerd op basis van hun basisnummer.
Elk nummeringssysteem heeft zijn eigen basisnummer en representatiesymbool. Ik heb deze vier getallen gepresenteerd in de volgende tabel:
Name of Number System |
Base Number |
Symbol Used for Representation |
Binary |
2 |
B |
Octal |
8 |
Q or O |
Decimal |
10 |
D or None |
Hexadecimal |
16 |
H |
Decimaal getalsysteem
Het decimale getalsysteem gebruikt grondtal 10 en bevat de cijfers van 0 tot en met 9. Raak niet in de war, het is het algemene getallenstelsel dat we in ons dagelijks leven gebruiken om de dingen te berekenen. De machtsgewogen waarden voor elke positie zijn als volgt:
Op deze manier, als ik een decimaal getal 218 heb en ik wil het op de bovenstaande manier weergeven, zal het getal 218 op de volgende manier worden weergegeven:
2 * 102 + 1 * 101 + 8 * 100
= 2 * 100 + 1 * 10 + 8 * 1
= 200 + 10 + 8
= 218
Laten we nu een voorbeeld nemen van elk fractioneel decimaal getal. Laten we een getal 821.128 hebben. Elk cijfer dat links van de komma verschijnt, vertegenwoordigt een waarde tussen nul en negen en de macht van tien wordt weergegeven door de positie in het getal (beginnend bij 0).
Cijfers die rechts van de komma verschijnen, vertegenwoordigen een waarde tussen nul en negen keer een toenemende 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 getalsysteem
Tegenwoordig werken de meeste moderne computersystemen met binaire logica. De computer geeft waarden weer met behulp van twee spanningsniveaus die aangeven dat UIT of AAN is met 0 en 1. De spanning 0V wordt bijvoorbeeld meestal weergegeven door logische 0 en ofwel +3,3 V of +5V-spanning wordt weergegeven door logische 1. Dus met twee niveaus kunnen we precies twee verschillende waarden vertegenwoordigen. Dit kunnen twee verschillende waarden zijn, maar volgens afspraak gebruiken we de waarden 0 en 1.
Aangezien er een overeenkomst is tussen de logische niveaus die door de computer worden gebruikt en de twee cijfers die in het binaire nummeringssysteem worden gebruikt, zou het geen verrassing moeten zijn dat computers het binaire systeem gebruiken.
Het binaire getalsysteem werkt als het decimale getalsysteem, behalve dat het binaire getalsysteem de basis 2 gebruikt en alleen de cijfers 0 en 1 bevat, en het gebruik van een ander cijfer zou het getal een ongeldig binair getal maken.
De gewogen waarden voor elke positie worden als volgt weergegeven:
De volgende tabel toont de weergave van het binaire getal tegen de decimale getallen:
Decimal Number |
Binary Number Representation |
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 |
Gewoonlijk worden in het geval van 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, is er een vergelijkbare conventie voor binaire getallen, zodat het gemakkelijker kan zijn om binaire getallen te lezen, maar in het geval van binaire getallen voegen we elke vier cijfers een spatie toe, beginnend bij het minst significante cijfer op links van de komma.
Bijvoorbeeld als de binaire waarde 1010011001101011 is, wordt deze geschreven as 1010 0110 0110 1011.
Binaire naar decimale getalconversie
Als we het binaire getal naar het decimale getal willen converteren, vermenigvuldigen we elk cijfer met de gewogen positie en voegen we alle gewogen waarden bij elkaar. De binaire waarde 1011 0101 staat bijvoorbeeld voor:
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 getalconversie
Om een decimaal getal om te zetten in zijn binaire getalsysteem, is de algemene methode om het decimale getal te delen door 2, als de rest 0 is, schrijf dan een 0 op de zijkant. Als de rest 1 is, schrijf dan een 1.
Dit proces wordt voortgezet door het quotiënt te delen door 2 en de vorige rest te laten vallen totdat het quotiënt 0 is. Bij het uitvoeren van de deling worden de resten die het binaire equivalent van het decimale getal vertegenwoordigen, geschreven vanaf het minst significante cijfer (rechts) en elk nieuw cijfer wordt geschreven naar een meer significant 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.
Division |
Quotient |
Remainder |
Binary Number |
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 in de praktijk te verduidelijken en om het gemak en de snelheid van de conversie te krijgen, kunt u de volgende manier volgen om de resultaten te krijgen.
Laat 1980 een decimaal getal zijn dat moet worden omgezet in zijn binaire equivalent. Door de methode in de tabel te volgen, lossen we dit probleem op de volgende manier op:
Wanneer we de restanten ordenen volgens de richting van de pijl, krijgen we het binaire getal dat overeenkomt met het decimale getal 1980 = 0111 1011 1100
Binaire getalnotaties
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:
Name |
Size in bits |
Example |
Bit |
1 |
1 |
Nibble |
4 |
0101 |
Byte |
8 |
0000 0101 |
Word |
16 |
0000 0000 0000 0101 |
Double Word |
32 |
0000 0000 0000 0000 0000 0000 0000 0101 |
We kunnen zoveel voorloopnullen toevoegen als we willen zonder de waarde ervan in een getallenbasis te veranderen, maar normaal gesproken voegen we voorloopnullen toe om het binaire getal aan te passen aan een gewenste groottegrens.
Bijvoorbeeld, we kunnen het getal 7 vertegenwoordigen zoals in verschillende gevallen zoals weergegeven in de tabel:
|
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Bit |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
1 |
Nibble |
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
1 |
1 |
Byte |
|
|
|
|
|
|
|
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Word |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
Waarbij het meest rechtse bit in een binair getal bitpositie nul is en elk bit aan de linkerkant het volgende opeenvolgende bitnummer krijgt, zoals weergegeven in de bovenstaande tabel.
Bit nul wordt meestal de minst significante bit of LSB genoemd en de meest linkse bit wordt meestal de meest significante bit of MSB genoemd. Laat het ons weten over deze weergavevormen:
Het bit
Een bit is de kleinste gegevenseenheid op een binaire computer. Een enkele bit kan slechts één waarde vertegenwoordigen, ofwel 0 of 1. Als u een bit gebruikt om een Booleaanse waarde (True/False) weer te geven, dan staat die bit voor waar of onwaar.
De knabbel
De Nibble komt speciaal op het gebied van interesse als we het hebben over de getalsystemen, BCD (Binary Coded Decimal) of/en hexadecimale (grondtal 16) getallen.
Een nibble is een verzameling bits op een grens van 4 bits. Er zijn vier bits nodig om één BCD of hexadecimaal cijfer weer te geven. Met een knabbel 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 alle zestien verschillende waarden worden weergegeven met een nibble, maar hexadecimale en BCD-cijfers zijn de belangrijkste items die we kunnen weergeven met een enkele nibble. De weergave op bitniveau van nibble is als volgt:
De byte
De byte is de belangrijkste gegevensstructuur die wordt gebruikt door de 80x86-microprocessor. Een byte bestaat uit acht bits en is het kleinste adresseerbare gegevensitem in de microprocessor. Het hoofdgeheugen en de I/O-adressen in de computer zijn allemaal byte-adressen en daarom is het kleinste item dat individueel toegankelijk is voor 80x86 microprocessorprogramma's een 8-bits waarde.
Om toegang te krijgen tot iets kleiners, moet u de byte met de gegevens lezen en de ongewenste bits maskeren. De programmering hiervoor zullen we in de volgende hoofdstukken doen.
Het belangrijkste gebruik van een byte is het vasthouden van een tekencode. De bits in een byte zijn als volgt genummerd van bit nul (b0) tot zeven (b7):
Bit 0 (b0) is de bit van lage orde of minst significante bit en bit 7 (b7) is de bit van hoge orde of meest significante bit van de byte.
Zoals hier zien we dat een byte precies twee nibbles bevat, waarbij bits b0 tot b3 de nibble van lage orde vormen en bits b4 tot en met b7 de nibble van hoge orde vormen.
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 waarvoor niet meer dan 256 items nodig zijn
Omdat een byte acht bits bevat, kan het 28 of 256 verschillende waarden vertegenwoordigen, omdat het maximale 8-bits binaire getal 1111 1111 is, wat gelijk is aan 256 (decimaal). Daarom wordt over het algemeen een byte gebruikt om het volgende weer te geven:
- niet-ondertekende numerieke waarden in het bereik van 0 tot 255
- ondertekende nummers 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, dus acht bits is meestal voldoende.
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 dubbelwoord geen vaste grootte, maar varieert het van systeem tot systeem, afhankelijk van de processor. Voor conceptuele lezing zullen we een woord echter definiëren als twee bytes.
Als we een woord op bitniveau zien, wordt het genummerd als de bits in een woord vanaf bit nul (b0) tot en met vijftien (b15). De weergave op bitniveau is als volgt:
Waar bit 0 de LSB (Least Significant Bit) is en bit 15 de MSB (Most Significant Bit). Wanneer het nodig is om de andere bits in een woord te verwijzen, wordt hun bitpositienummer gebruikt om ze te verwijzen.
Op deze manier bevat een woord precies twee bytes, zodanig dat van Bit b0 tot en met Bit b7 de byte van lage orde vormen en bits b8 tot en met b15 de byte van hoge orde. Met een woord van 16 bits kunnen we 216 (65536) verschillende waarden weergeven. Deze waarden kunnen van de volgende zijn:
- De niet-ondertekende 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-bit integer gegevenswaarden
- 16-bits geheugenadressen
- Elk nummersysteem dat 16 bits of minder vereist
Het dubbele woord
Een dubbel woord komt precies overeen met zijn naam en bestaat uit twee woorden. Daarom is een aantal dubbele woorden 32 bits. Het dubbele woord kan ook worden onderverdeeld in een woord van hoge orde en een woord van lage orde, vier bytes of acht nibbles enz.
Op deze manier kan het dubbele woord allerlei verschillende gegevens vertegenwoordigen. Het kan van het volgende zijn:
- Een niet-ondertekend dubbel woord in het bereik van 0 tot 4.294.967.295,
- Een ondertekend 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 nummersysteem
Het Octal Number System was populair in oude computersystemen, maar wordt tegenwoordig nog maar zelden gebruikt. We zullen echter een ideaal van Octal System nemen alleen voor kennis.
Het Octal-systeem is gebaseerd op het binaire systeem met een grens van 3 bits. Het octale nummersysteem gebruikt grondtal 8 en bevat alleen de cijfers 0 tot en met 7. Op deze manier zou elk ander cijfer het nummer een ongeldig octaal getal maken.
De gewogen waarden voor elke positie zijn als volgt weergegeven in de tabel:
(base)power |
85 |
84 |
83 |
82 |
81 |
80 |
Value |
32768 |
4096 |
512 |
64 |
8 |
1 |
Binaire naar octale conversie
Om van een geheel binair getal naar octaal te converteren, volgen we de volgende twee stappen:
Breek eerst het binaire getal op in 3-bits secties van de LSB tot 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, zeg 11001011010001 hebben gegeven om te converteren naar Octal Number System, zullen we de bovenstaande twee stappen als volgt op dit nummer toepassen:
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Equivalent number |
3 |
1 |
3 |
2 |
1 |
Dus het octale getal, gelijk aan Het binaire getal 11001011010001 is 31321.
Octaal naar binair conversie
Om een willekeurig geheel octaal getal om te zetten in het bijbehorende binaire getal, volgen we de volgende twee stappen:
Converteer eerst het decimale getal naar het 3-bits binaire equivalent. En combineer vervolgens de 3-bits secties door de spaties te verwijderen. Laten we een voorbeeld nemen. Als we een octaal getal integer 31321(Q) hebben om te converteren naar het overeenkomstige binaire getal, zullen we de bovenstaande twee stappen als volgt toepassen:
Equivalent number |
3 |
1 |
3 |
2 |
1 |
3-bit Section of Binary Number |
011 |
001 |
011 |
010 |
001 |
Dus het binaire equivalent voor het octale getal 31321(Q) is 011 0010 1101 0001.
Omrekening van octaal naar decimal
Om een octaal getal naar decimaal te converteren, vermenigvuldigen we de waarde in elke positie met het octale gewicht en voegen we elke waarde toe.
Laten we een voorbeeld nemen om dit beter te begrijpen. Laten we een willekeurig octaal getal 31321Q hebben dat moet worden omgezet in het bijbehorende decimale getal. Dan volgen we de volgende stappen:
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 omzetten in octaal is iets moeilijker. De typische methode om van decimaal naar octaal te converteren is herhaalde deling door 8. Voor deze methode delen we het decimale getal door 8 en schrijven de rest op de zijkant als het minst significante cijfer. Dit proces wordt voortgezet door het quotiënt te delen door 8 en de rest te schrijven totdat het quotiënt 0 is.
Bij het uitvoeren van de deling worden de restanten die het octale equivalent van het decimale getal vertegenwoordigen, geschreven vanaf het minst significante cijfer (rechts) en elk nieuw cijfer wordt geschreven naar het volgende, meer significante cijfer (links) van het vorige cijfer.
Laten we het beter begrijpen met een voorbeeld. Als we een decimaal getal hebben, zeg 13009 (we hebben dit decimale getal uit het bovenstaande voorbeeld gevonden 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:
Division |
Quotient |
Remainder |
Octal Number |
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 je ziet zijn we weer terug met het originele nummer. Dat is wat we mogen verwachten. Deze tafel was bedoeld 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 werkgemak te krijgen en ook om tijd te besparen. Beide zijn in feite dezelfde dingen.
Wanneer we de restanten ordenen volgens de richting van de pijl, krijgen we het octale getal 31321, dat we verwachtten.
Hexadecimaal getalsysteem
Hexadecimale getallen worden het meest gebruikt bij ons gegevensherstel of bij elk ander type schijfprobleemoplossing of schijfanalyseprogramma, omdat hexadecimale getallen de volgende twee functies bieden:
Hexadecimale getallen zijn erg compact. En het is gemakkelijk om van hex naar binair en binair naar hex te converteren. Als we veel belangrijke dingen gaan berekenen, zoals het aantal cilinders, koppen en sectoren van een harde schijf, of als we bewerkingsprogramma's voor harde schijven gebruiken om verschillende kenmerken en problemen te analyseren, hebben we goede kennis van het Hex-systeem nodig. Het hexadecimale systeem is gebaseerd op het binaire systeem dat een Nibble- of 4-bits grens gebruikt.
Het hexadecimale getalsysteem gebruikt grondtal 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 een hexadecimaal getal. De volgende tabel toont de weergave van verschillende nummerstelsels, waarbij ze van elkaar worden onderscheiden:
Binary |
Octal |
Decimal |
Hex |
0000B |
00Q |
00 |
00H |
0001B |
01Q |
01 |
01H |
0010B |
02Q |
02 |
02H |
0011B |
03Q |
03 |
03H |
0100B |
04Q |
04 |
04H |
0101B |
05Q |
05 |
05H |
0110B |
06Q |
06 |
06H |
0111B |
07Q |
07 |
07H |
1000B |
10Q |
08 |
08H |
1001B |
11Q |
09 |
09H |
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 |
10H |
Deze tabel biedt alle informatie die u ooit nodig kunt hebben om van de ene getalbasis naar de andere te converteren voor de decimale waarden van 0 tot 16.
De gewogen waarden voor elke positie voor hexadecimale getallen zijn weergegeven in de volgende tabel:
(Base)power |
163 |
162 |
161 |
160 |
Value |
4096 |
256 |
16 |
1 |
Binair naar hexadecimaal conversie
Als u een binair getal naar een hexadecimaal formaat wilt converteren, vult u het binaire getal eerst met voorloopnullen aan de linkerkant om er zeker van te zijn dat het binaire getal veelvouden van vier bits bevat. Volg daarna de volgende twee stappen:
Breek eerst het binaire getal op in 4-bits secties van de LSB naar de MSB. En converteer vervolgens het 4-bits binaire getal naar zijn Hex-equivalent. Laten we een voorbeeld nemen om de methode beter te begrijpen. Laten we een willekeurig binair getal 100 1110 1101 0011 laten converteren naar het bijbehorende hexadecimale getal. Dan zullen we bovenstaande twee stappen toepassen, zoals hieronder weergegeven:
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
Hexadecimal value |
4 |
E |
D |
3 |
Dus de hexadecimale waarde, die overeenkomt met het binaire getal 100 1110 1101 0011 is 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 het 4-bits binaire equivalent. En combineer vervolgens de 4-bits secties door de spaties te verwijderen. Om de procedure beter te begrijpen, laten we een voorbeeld nemen van het bovenstaande hexadecimale getal, dat is 4ED3 en deze twee stappen daarop toepassen als volgt
Hexadecimal value |
4 |
E |
D |
3 |
4-bit binary number section |
0100 |
1110 |
1101 |
0011 |
Dus voor het hexadecimale getal 4ED3 krijgen we het corresponderende binaire getal = 0100 1110 1101 0011
Dit is het verwachte antwoord. Conversie van hexadecimaal naar decimaal Om van hexadecimaal naar decimaal te converteren, vermenigvuldigen we de waarde in elke positie met het hexadecimale gewicht en voegen we elke waarde toe. Laten we een voorbeeld nemen om de procedure beter te begrijpen. Neem aan dat we elk hexadecimaal getal 3ABE hebben dat moet worden omgezet in 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 te converteren, is de gebruikelijke methode herhaalde deling door 16. Voor deze methode delen we het decimale getal door 16 en schrijven de rest op 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 hex-equivalent van het decimale getal vertegenwoordigen, geschreven vanaf het minst significante cijfer (rechts ) en elk nieuw cijfer wordt geschreven naar het volgende, meer significante cijfer (links) van het vorige cijfer.
Laten we het met een voorbeeld leren. We nemen het decimale getal 15038 dat we kregen na conversie hierboven. Hiermee kunnen we ook de bovenstaande conversie controleren en vice versa.
Division |
Quotient |
Remainder |
Hex Number |
15038 / 16 |
939 |
14 (E H) |
E |
939 / 16 |
58 |
11 (B H) |
BE |
58 / 16 |
3 |
10 (A H) |
ABE |
3 / 16 |
0 |
3 (3 H) |
03ABE |
Zo krijgen we hexadecimaal getal 03ABE H, equivalent aan het decimale getal 15038 en op deze manier zijn we terug bij het oorspronkelijke getal. Dat is wat we mogen verwachten.
De volgende tabel kan helpen bij het snel zoeken van hexadecimale getallen naar decimale getallen en vice versa in het bereik van 0 tot 255 decimale getallen.
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. Uit deze tabel kunt u de decimale waarde vinden van elk hexadecimaal getal dat tussen het bereik van 0H tot FFH ligt. Dit betekent dat de decimale waarde van het getal tussen 0 en 255 decimale getallen moet liggen.
- Decimale waarde voor hexadecimaal getal uit bovenstaande tabel vinden: In de bovenstaande tabel staat het aantal rijen voor het eerste hexadecimale cijfer (links hexadecimaal cijfer) en het aantal kolommen voor het tweede hexadecimale cijfer (rechts hexadecimaal cijfer) van het hexadecimale getal.
Laten we elk hexadecimaal getal hebben, zeg ACH, om te zetten in het equivalente decimale getal. Dan zullen we de decimale waarde in de C-kolom van de Ath-rij in de tabel zien en de decimale waarde 172 krijgen, wat het equivalente decimale getal is voor het hexadecimale getal ACH.
- Hexadecimale waarde voor het decimale getal uit bovenstaande tabel vinden: In de bovenstaande tabel staat het aantal rijen voor het eerste hexadecimale cijfer (links hexadecimaal cijfer) en het aantal kolommen voor het tweede hexadecimale cijfer (rechts hexadecimaal cijfer) van het hexadecimale getal dus als je een decimaal getal hebt dat moet worden omgezet in een equivalent hexadecimaal getal, zoek dan het getal in de tabel en vind de equivalente hexadecimale waarde als volgt:
Hexwaarde voor het decimale getal = (rijnummer) (kolomnummer)
Als u bijvoorbeeld het equivalente getal met de hexadecimale waarde voor het decimale getal 154 wilt vinden, raadpleegt u de locatie van het getal in de tabel. Het getal 154 staat in de 9e rij en kolom Ath van de tabel. Dus de equivalente hexadecimale waarde voor het decimale getal 154 is 9AH.
ASCII-code
De afkorting ASCII staat voor American Standard Code for Information Interchange. Het is een coderingsstandaard voor tekens, cijfers en symbolen die gelijk is aan 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, de ASCII-codes 0 tot en met 1FH, vormen een speciale set niet-afdrukbare tekens. Deze tekens worden de controletekens genoemd omdat deze tekens verschillende printer- en weergavecontrolehandelingen uitvoeren in plaats van symbolen weer te geven. Deze tekens zijn vermeld in de ASCII-tekentabel in dit hoofdstuk. Deze controletekens hebben de volgende betekenissen:
NUL (Null):
Geen teken. Het wordt gebruikt voor het invullen van tijd of het vullen van ruimte op het oppervlak (zoals het oppervlak van de schotel) van een opslagapparaat waar geen gegevens zijn. We gebruiken dit teken wanneer we programmeren voor gegevenswissers (destructief en niet-destructief beide) om de niet-toegewezen ruimte te wissen, zodat verwijderde gegevens door niemand of door enig programma kunnen worden hersteld.
SOH (begin van koers):
Dit teken wordt gebruikt om het begin van de koers aan te geven, die adres- of route-informatie kan bevatten.
TX (begin van tekst):
Dit teken wordt gebruikt om het begin van tekst aan te geven en op deze manier wordt dit ook gebruikt om het einde van de kop aan te geven.
ETX (einde van tekst):
Dit teken wordt gebruikt om de tekst te beëindigen die met STX is begonnen.
EOT (einde verzending):
Dit teken geeft het einde van de verzending aan, die mogelijk een of meer "tests" met hun koppen bevat.
ENQ (aanvraag):
Het is een verzoek om een antwoord van een extern station. Het is een verzoek aan een zender om zichzelf te identificeren.
ACK (Bevestigen):
Het is een teken dat door een ontvangend apparaat wordt verzonden als een bevestigingsreactie op een schuurmachine. Het wordt gebruikt als een positieve reactie op polling-berichten.
BEL (Bel):
Het wordt gebruikt wanneer het nodig is om menselijke aandacht te vragen. Het kan alarm- of attentieapparaten bedienen. U kunt een belsignaal horen uit de luidsprekers die op uw computer zijn aangesloten wanneer u dit teken typt in de opdrachtprompt, zoals hieronder weergegeven:
C:\> Echo ^G
Hier wordt ^G afgedrukt door de combinatie van de toetsencombinatie Ctrl + G.
BS (Backspace):
Dit teken geeft de beweging van het afdrukmechanisme of de displaycursor in één positie terug.
HT (horizontaal tabblad):
Het geeft de beweging van het afdrukmechanisme of de displaycursor aan naar de volgende vooraf toegewezen "Tab"- of stoppositie.
LF (regelinvoer):
Het geeft de beweging van het afdrukmechanisme of de weergavecursor naar het begin van de volgende regel aan.
VT (verticaal tabblad):
Het geeft de beweging van het afdrukmechanisme of de displaycursor aan naar de volgende van een reeks vooraf toegewezen afdrukregels.
FF (formulierfeed):
Het geeft de beweging van het afdrukmechanisme of de displaycursor aan naar de startpositie van de volgende pagina, vanaf of het scherm.
CR (Carriage Return):
Het geeft de beweging van het afdrukmechanisme of de displaycursor aan naar de startpositie van dezelfde regel.
DUS (Uitschakelen):
Het geeft aan dat de codecombinaties die volgen moeten worden geïnterpreteerd als buiten de standaard tekenset totdat een Shift In-teken wordt bereikt.
Ik (inschakelen):
Het geeft aan dat de codecombinaties die volgen, 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 zal veranderen. Het kan aanvullende controle bieden of het verzenden van gegevenstekens met elke bitcombinatie mogelijk maken.
DC1, DC2, DC3 en DC4 (apparaatbediening):
Dit zijn de tekens voor de besturing van hulpapparatuur of speciale terminalfuncties.
NAK (negatieve bevestiging):
Het is een teken dat door een ontvangend apparaat wordt verzonden als een negatieve reactie op een afzender. 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 van transmissieblokkering):
Dit teken geeft het einde aan van een gegevensblok voor communicatiedoeleinden. Het wordt gebruikt voor het blokkeren van gegevens, waarbij de blokstructuur niet noodzakelijk gerelateerd is aan het verwerkingsformaat.
CAN (Annuleren): Het geeft aan dat de gegevens die eraan voorafgaan in een bericht of blok moeten worden genegeerd, meestal omdat er een fout is gedetecteerd.
EM (End of Medium): Het geeft het fysieke einde van een band, oppervlak (meestal van een schijf) of ander medium of het einde van het vereiste of gebruikte gedeelte van het medium aan.
SUB (Vervanging): Het is een vervanging voor een teken dat foutief of ongeldig blijkt te zijn.
ESC (Escape): Het is een teken dat bedoeld is om code-extensies te geven, omdat het een bepaald aantal continu volgende tekens een alternatieve betekenis geeft.
FS (Bestandsscheidingsteken): Dit teken wordt gebruikt als een bestandsscheidingsteken.
GS (Groepsscheidingsteken): Het wordt gebruikt als een groepsscheidingsteken.
RS (Record Separator): Het wordt gebruikt als een record-scheidingsteken.
VS (Verenigd 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 karakters in deze groep zijn de volgende:
spatie (ASCII-code 20H)
numerieke cijfers 0 tot en met 9 (ASCII-codes 30h tot 39h)
wiskundige en logische symbolen
SP (spatie):
Het is een niet-afdrukbaar teken dat wordt gebruikt om woorden te scheiden of om het afdrukmechanisme te verplaatsen of om de cursor één positie naar voren te laten zien.
De derde groep van 32 ASCII-tekens is de groep van alfabetische hoofdletters. De ASCII-codes voor de tekens A tot en met Z liggen in het bereik 41H tot en met 5AH. Aangezien er slechts 26 verschillende alfabetische tekens zijn, bevatten de overige zes codes verschillende speciale symbolen.
De vierde groep van 32 ASCII-tekencodes is de groep van alfabetische symbolen in kleine letters, vijf extra speciale symbolen en nog een controleteken.
DEL (Verwijderen):
Het wordt gebruikt om ongewenste tekens te wissen, in plaats daarvan kunnen we zeggen om de ongewenste tekens te verwijderen.
Er zijn hierna twee tabellen getoond, die de ASCII-codes en uitgebreide tekens vertegenwoordigen. De eerste tabel vertegenwoordigt alle vier beschreven groepen van verschillende typen karakters. Deze tabel is een gegevensweergave en een ASCII-tabel zoals hieronder weergegeven:
Gegevensweergave en ASCII-codetabel:
HEX |
DEC |
CHR |
CTRL |
00 |
0 |
NUL |
^@ |
01 |
1 |
SOH |
^A |
02 |
2 |
STX |
^B |
03 |
3 |
ETX |
^C |
04 |
4 |
EOT |
^D |
05 |
5 |
ENQ |
^E |
06 |
6 |
ACK |
^F |
07 |
7 |
BEL |
^G |
08 |
8 |
BS |
^H |
09 |
9 |
HT |
^I |
0A |
10 |
LF |
^J |
0B |
11 |
VT |
^K |
0C |
12 |
FF |
^L |
0D |
13 |
CR |
^M |
0E |
14 |
SO |
^N |
0F |
15 |
SI |
^O |
10 |
16 |
DLE |
^P |
11 |
17 |
DC1 |
^Q |
12 |
18 |
DC2 |
^R |
13 |
19 |
DC3 |
^S |
14 |
20 |
DC4 |
^T |
15 |
21 |
NAK |
^U |
16 |
22 |
SYN |
^V |
17 |
23 |
ETB |
^W |
18 |
24 |
CAN |
^X |
19 |
25 |
EM |
^Y |
1A |
26 |
SUB |
^Z |
1B |
27 |
ESC |
1C |
28 |
FS |
1D |
29 |
GS |
1E |
30 |
RS |
1F |
31 |
US |
HEX |
DEC |
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 |
. |
2F |
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 |
> |
3F |
63 |
? |
HEX |
DEC |
CHR |
40 |
64 |
@ |
41 |
65 |
A |
42 |
66 |
B |
43 |
67 |
C |
44 |
68 |
D |
45 |
69 |
E |
46 |
70 |
F |
47 |
71 |
G |
48 |
72 |
H |
49 |
73 |
I |
4A |
74 |
J |
4B |
75 |
K |
4C |
76 |
L |
4D |
77 |
M |
4E |
78 |
N |
4F |
79 |
O |
50 |
80 |
P |
51 |
81 |
Q |
52 |
82 |
R |
53 |
83 |
S |
54 |
84 |
T |
55 |
85 |
U |
56 |
86 |
V |
57 |
87 |
W |
58 |
88 |
X |
59 |
89 |
Y |
5A |
90 |
Z |
5B |
91 |
[ |
5C |
92 |
\ |
5D |
93 |
] |
5E |
94 |
^ |
5F |
95 |
_ |
HEX |
DEC |
CHR |
60 |
96 |
` |
61 |
97 |
a |
62 |
98 |
b |
63 |
99 |
c |
64 |
100 |
d |
65 |
101 |
e |
66 |
102 |
f |
67 |
103 |
g |
68 |
104 |
h |
69 |
105 |
i |
6A |
106 |
j |
6B |
107 |
k |
6C |
108 |
l |
6D |
109 |
m |
6E |
110 |
n |
6F |
111 |
o |
70 |
112 |
p |
71 |
113 |
q |
72 |
114 |
r |
73 |
115 |
s |
74 |
116 |
t |
75 |
117 |
u |
76 |
118 |
v |
77 |
119 |
w |
78 |
120 |
x |
79 |
121 |
y |
7A |
122 |
z |
7B |
123 |
{[} |
7C |
124 |
| |
7D |
125 |
} |
7E |
126 |
~ |
7F |
127 |
DEL |
De volgende tabel toont de 128 speciale ASCII-tekens die vaak de Extended ASCII-tekens worden genoemd:
HEX |
DEC |
CHR |
80 |
128 |
Ç |
81 |
129 |
ü |
82 |
130 |
é |
83 |
131 |
â |
84 |
132 |
ä |
85 |
133 |
à |
86 |
134 |
å |
87 |
135 |
ç |
88 |
136 |
ê |
89 |
137 |
ë |
8A |
138 |
è |
8B |
139 |
ï |
8C |
140 |
î |
8D |
141 |
ì |
8E |
142 |
Ä |
8F |
143 |
Å |
90 |
144 |
É |
91 |
145 |
æ |
92 |
146 |
Æ |
93 |
147 |
ô |
94 |
148 |
ö |
95 |
149 |
ò |
96 |
150 |
û |
97 |
151 |
ù |
98 |
152 |
ÿ |
99 |
153 |
Ö |
9A |
154 |
Ü |
9B |
155 |
¢ |
9C |
156 |
£ |
9D |
157 |
¥ |
9E |
158 |
₧ |
9F |
159 |
ƒ |
A0 |
160 |
á |
A1 |
161 |
í |
A2 |
162 |
ó |
A3 |
163 |
ú |
A4 |
164 |
ñ |
HEX |
DEC |
CHR |
A5 |
165 |
Ñ |
A6 |
166 |
ª |
A7 |
167 |
º |
A8 |
168 |
¿ |
A9 |
169 |
⌐ |
AA |
170 |
¬ |
AB |
171 |
½ |
AC |
172 |
¼ |
AD |
173 |
¡ |
AE |
174 |
« |
AF |
175 |
» |
B0 |
176 |
░ |
B1 |
177 |
▒ |
B2 |
178 |
▓ |
B3 |
179 |
│ |
B4 |
180 |
┤ |
B5 |
181 |
╡ |
B6 |
182 |
╢ |
B7 |
183 |
╖ |
B8 |
184 |
╕ |
B9 |
185 |
╣ |
BA |
186 |
║ |
BB |
187 |
╗ |
BC |
188 |
╝ |
BD |
189 |
╜ |
BE |
190 |
╛ |
BF |
191 |
┐ |
C0 |
192 |
└ |
C1 |
193 |
┴ |
C2 |
194 |
┬ |
C3 |
195 |
├ |
C4 |
196 |
─ |
C5 |
197 |
┼ |
C6 |
198 |
╞ |
C7 |
199 |
╟ |
C8 |
200 |
╚ |
C9 |
201 |
╔ |
HEX |
DEC |
CHR |
CA |
202 |
╩ |
CB |
203 |
╦ |
CC |
204 |
╠ |
CD |
205 |
═ |
CE |
206 |
╬ |
CF |
207 |
╧ |
D0 |
208 |
╨ |
D1 |
209 |
╤ |
D2 |
210 |
╥ |
D3 |
211 |
╙ |
D4 |
212 |
╘ |
D5 |
213 |
╒ |
D6 |
214 |
╓ |
D7 |
215 |
╫ |
D8 |
216 |
╪ |
D9 |
217 |
┘ |
DA |
218 |
┌ |
DB |
219 |
█ |
DC |
220 |
▄ |
DD |
221 |
▌ |
DE |
222 |
▐ |
DF |
223 |
▀ |
E0 |
224 |
α |
E1 |
225 |
ß |
E2 |
226 |
Γ |
E3 |
227 |
π |
E4 |
228 |
Σ |
E5 |
229 |
σ |
E6 |
230 |
µ |
E7 |
231 |
τ |
E8 |
232 |
Φ |
E9 |
233 |
Θ |
EA |
234 |
Ω |
EB |
235 |
δ |
EC |
236 |
∞ |
ED |
237 |
φ |
EE |
238 |
Ε |
HEX |
DEC |
CHR |
EF |
239 |
∩ |
F0 |
240 |
≡ |
F1 |
241 |
± |
F2 |
242 |
≥ |
F3 |
243 |
≤ |
F4 |
244 |
⌠ |
F5 |
245 |
⌡ |
F6 |
246 |
÷ |
F7 |
247 |
≈ |
F8 |
248 |
° |
F9 |
249 |
∙ |
FA |
250 |
· |
FB |
251 |
√ |
FC |
252 |
ⁿ |
FD |
253 |
² |
FE |
254 |
■ |
FF |
255 |
|
Enkele belangrijke termen van het nummersysteem, vaak gebruikt voor gegevens- en gegevensopslagweergave
De onderstaande tabel geeft de verschillende prefixen weer die worden gebruikt als fractionele prefixen en als vergrotende prefixen:
Byte:
Het belangrijkste gebruik van een byte is het vasthouden van een tekencode. We hebben het eerder besproken.
Kilobyte
Technisch gezien is een kilobyte 1024 bytes, maar het wordt vaak losjes gebruikt als synoniem voor 1000 bytes. In decimale systemen staat kilo voor 1000, maar in binaire systemen is een kilo 1024 (210).
Kilobyte wordt meestal weergegeven door K of Kb. Om onderscheid te maken tussen een decimale K (1000) en een binaire K (1024), heeft de IEEE-standaard (Institute of Electrical and Electronics Engineers) voorgesteld de conventie te volgen om een kleine k voor een decimale kilo en een hoofdletter K voor een binaire kilo te gebruiken maar deze conventie wordt geenszins strikt gevolgd.
Megabyte
Megabyte wordt gebruikt om gegevensopslag van 1048576 (220) bytes te beschrijven, maar wanneer het wordt gebruikt om gegevensoverdrachtsnelheden te beschrijven, zoals in MBps, verwijst het naar één miljoen bytes. Megabyte wordt meestal afgekort als M of MB.
Gigabyte
Gigabyte wordt gebruikt om de opslag van 1.073.741.824 (230) bytes te beschrijven en één gigabyte is gelijk aan 1.024 megabytes. Gigabyte wordt meestal afgekort als G of GB.
Terabyte
Terabyte is 1.099.511.627.776 (240) bytes, wat ongeveer 1 biljoen bytes is. Terabyte wordt soms beschreven als 1012 (1.000.000.000.000.000) bytes, wat precies een biljoen is.
Petabyte
Petabyte wordt beschreven als 1.125.899.906.842.624 (250) bytes. Een Petabyte is gelijk aan 1.024 terabyte.
Exabyte
Exabyte wordt beschreven als 1.152.921.504.606.846.976 (260) bytes. Een Exabyte is gelijk aan 1.024 Petabyte.
Zettabyte
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
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) bytes is. Een Yottabyte is gelijk aan 1.024 Zettabyte.
Algemene voorwaarden voor gegevensopslag
Er zijn verschillende namen die worden gebruikt om de eerder gegeven termen te verwijzen naar verschillende groepen gegevensbits. Enkele van de meest gebruikte, zijn vermeld in de volgende tabel:
Term |
Number of Bits |
Bit / Digit / Flag |
1 |
Nibble / Nybble |
4 |
Byte / Character |
8 |
Word |
16 |
Double Word / Long Word |
32 |
Very Long Word |
64 |
Pagina aangepast op: 06/01/2022