Hexadezimale Zahlensystemtabelle. Illustriertes Tutorial zu digitalen Grafiken

Hexadezimales Zahlensystem ist bei weitem das beliebteste Mittel zur kompakten Aufzeichnung von Binärzahlen. Sehr weit verbreitet in der Entwicklung und dem Design digitaler Technologie.

Wie der Name schon sagt, ist die Basis dieses Systems die Zahl sechzehn 16 oder hexadezimal 10 16 . Um Verwirrung zu vermeiden, geben wir beim Schreiben von Zahlen in anderen Zahlensystemen als dem Dezimalsystem unten rechts in der Hauptzahlennotation die Basis des Zahlensystems an. Da die Basis des Systems die Zahl sechzehn ist, bedeutet das, dass wir zur Darstellung der Zahlen sechzehn Ziffern benötigen. Die ersten zehn Ziffern werden dem uns bekannten Dezimalsystem (0,1,..,8,9) entnommen und zusätzlich sechs Buchstaben des lateinischen Alphabets (a,b,c,d,e,f) hinzugefügt. Beispielsweise sind in der Hexadezimalzahl 3f7c2 die Buchstaben „f“ und „c“ Hexadezimalziffern.

Das Zählen im Hexadezimalsystem ähnelt dem Zählen im Dezimalsystem. Versuchen wir, Zahlen zu zählen und zu schreiben, indem wir sie aus den verfügbaren sechzehn Ziffern konstruieren:

Null - 0 ;
Eins - 1 ;
Zwei - 2 ;
...
usw…
...
Acht - 8 ;
Neun - 9 ;
Zehn - A;
elf - B;
Zwölf - C;
Dreizehn - D;
Vierzehn - e;
Fünfzehn - F;

Was macht man als nächstes? Alle Zahlen sind weg. Wie stellt man die Zahl Sechzehn dar? Machen wir dasselbe wie im Dezimalsystem. Dort haben wir das Konzept von zehn eingeführt, hier werden wir das Konzept von „sechzehn“ einführen und sagen, dass sechzehn eins „sechzehn“ und null Einsen ist. Und das lässt sich schon aufschreiben – „10 16“.

Also, Sechzehn - 10 16 (eins „sechzehn“, null eins)
Siebzehn - 11 16 (ein „sechzehn“, eine Einheit)
...
usw…
...
Fünfundzwanzig - 19 16 (eins „sechzehn“, neun eins)
Sechsundzwanzig - 1a 16 (ein „sechzehn“, zehn Einheiten)
Siebenundzwanzig - 1b 16 (eins „sechzehn“, elf Einheiten)
...
usw…
...
Dreißig - 1e 16 (eins „sechzehn“, vierzehn eins)
Einunddreißig - 1f 16 (eine „sechzehn“, fünfzehn Einheiten)
Zweiunddreißig - 20 16 (zwei Sechzehner, null Einsen)
Dreiunddreißig - 21 16 (zwei Sechzehner, eins eins)
...
usw…
...
Zweihundertfünfundfünfzig - ff 16 (fünfzehn mal „sechzehn“, fünfzehn Einheiten)

zweihundertsechsundfünfzig - 100 16 (eins „Zweihundertsechsundfünfzig“, null „sechzehn“, null Einsen)
zweihundertsiebenundfünfzig - 101 16 (eins „zweihundertsechsundfünfzig“, null bis „sechzehn“, eins eins)
zweihundertachtundfünfzig - 102 16 (eins „Zweihundertsechsundfünfzig“, null bis „sechzehn“, zwei Einsen)
...
usw...
...

Immer wenn wir den Ziffernsatz zur Anzeige der nächsten Zahl erschöpft haben, geben wir größere Zähleinheiten ein (z. B. Zählen mit „sechzehn“, „zweihundertsechsundfünfzig“ usw.) und schreiben die um eine Ziffer erweiterte Zahl.

Bedenken Sie die Zahl 3e2c 16 im hexadezimalen Zahlensystem geschrieben. Wir können darüber sagen, dass es enthält: drei x viertausendsechsundneunzig, „e“ (vierzehn) x zweihundertsechsundfünfzig, zwei x sechzehn und „c“ (zwölf) Einsen. Und Sie können seinen Wert anhand der darin enthaltenen Zahlen wie folgt ermitteln.

3e2c 16 = 3 *4096+14 *256+2 *16+12 *1, hier und unten bedeutet das Zeichen * (Sternchen) Multiplikation.

Aber die Zahlenreihe 4096, 256, 16, 1 ist nichts anderes als ganzzahlige Potenzen der Zahl sechzehn (der Basis des Zahlensystems) und kann daher geschrieben werden:

3e2c 16 = 3 *16 3 +14 *16 2 +2 *16 1 +12 *16 0

Ähnliches gilt für einen hexadezimalen Bruch (Bruchzahl), zum Beispiel: 0,5a2 16 Darüber können wir sagen, dass es enthält: fünf Sechzehntel, „a“ (zehn) zweihundertsechsundfünfzig und zwei viertausendsechsundneunzig. Und sein Wert lässt sich wie folgt berechnen:

0,5a2 16 = 5 *(1/16) + 10 *(1/256) + 2 *(1/4096)

Und hier ist eine Reihe von Zahlen 1/16; 1/256 und 1/4096 sind nichts anderes als ganzzahlige Sechzehnerpotenzen und wir können auch schreiben:

0,5a2 16 = 5 *16 -1 + 10 *16 -2 + 2 *16 -3

Für die gemischte Zahl 7b2.1f9 können wir auf die gleiche Weise schreiben:

7b2.1f9 = 7 *16 2 +11 *16 1 +2 *16 0 +1 *16 -1 +15 *16 -2 +9 *16 -3

Nummerieren wir die Ziffern des ganzzahligen Teils einer Hexadezimalzahl von rechts nach links mit 0,1,2...n (die Nummerierung beginnt bei Null!). Und die Ziffern des Bruchteils, von links nach rechts, wie -1,-2,-3...-m, dann kann der Wert einer bestimmten Hexadezimalzahl mit der Formel berechnet werden:

N = d n 16 n +d n-1 16 n-1 +…+d 1 16 1 +d 0 16 0 +d -1 16 -1 +d -2 16 -2 +…+d -(m-1) 16 -(m-1) +d -m 16 -m

Wo: N- die Anzahl der Ziffern im ganzzahligen Teil der Zahl minus eins;
M- die Anzahl der Ziffern im Bruchteil der Zahl
d i- Ziffer im Stehen ich-ter Rang

Diese Formel wird als Formel für die bitweise Entwicklung einer Hexadezimalzahl bezeichnet, d.h. Zahl im hexadezimalen Zahlensystem geschrieben. Wenn wir die Zahl sechzehn in dieser Formel durch eine beliebige Zahl ersetzen Q, dann erhalten wir die Entwicklungsformel für die eingeschriebene Zahl qth Zahlensystem, d.h. mit Sockel Q:

N = d n q n +d n-1 q n-1 +…+d 1 q 1 +d 0 q 0 +d -1 q -1 +d -2 q -2 +…+d -(m-1) q - (m-1) +d -m q -m

Mit dieser Formel können Sie jederzeit den Wert einer Zahl berechnen, die in einem beliebigen Positionszahlensystem mit Basis geschrieben ist Q.

Weitere Zahlensysteme finden Sie auf unserer Website über die folgenden Links.

Das Ergebnis liegt bereits vor!

Zahlensysteme

Es gibt positionelle und nicht-positionelle Zahlensysteme. Das arabische Zahlensystem, das wir verwenden Alltagsleben, ist positionell, Roman jedoch nicht. In Positionszahlensystemen bestimmt die Position einer Zahl eindeutig die Größe der Zahl. Betrachten wir dies am Beispiel der Zahl 6372 im dezimalen Zahlensystem. Nummerieren wir diese Zahl von rechts nach links, beginnend bei Null:

Dann lässt sich die Zahl 6372 wie folgt darstellen:

6372=6000+300+70+2 =6·10 3 +3·10 2 +7·10 1 +2·10 0 .

Die Zahl 10 bestimmt das Zahlensystem (in diesem Fall ist es 10). Als Potenzen werden die Werte der Position einer gegebenen Zahl angenommen.

Betrachten Sie die echte Dezimalzahl 1287,923. Nummerieren wir es beginnend bei der Nullposition der Zahl vom Dezimalpunkt nach links und rechts:

Dann kann die Zahl 1287.923 dargestellt werden als:

1287,923 =1000+200+80 +7+0,9+0,02+0,003 = 1·10 3 +2·10 2 +8·10 1 +7·10 0 +9·10 -1 +2·10 -2 +3· 10 -3.

Im Allgemeinen lässt sich die Formel wie folgt darstellen:

C n S n +C n-1 · S n-1 +...+C 1 · S 1 +C 0 ·s 0 +D -1 ·s -1 +D -2 ·s -2 +...+D -k ·s -k

wobei C n eine ganze Zahl in der Position ist N, D -k - Bruchzahl in Position (-k), S- Zahlensystem.

Ein paar Worte zu Zahlensystemen. Eine Zahl im dezimalen Zahlensystem besteht aus vielen Ziffern (0,1,2,3,4,5,6,7,8,9), im oktalen Zahlensystem besteht sie aus vielen Ziffern (0,1, 2,3,4,5,6,7), im binären Zahlensystem - aus einer Ziffernfolge (0,1), im hexadezimalen Zahlensystem - aus einer Ziffernfolge (0,1 ,2,3,4,5,6, 7,8,9,A,B,C,D,E,F), wobei A,B,C,D,E,F den Zahlen 10,11 entsprechen, 12,13,14,15. In der Tabelle Tab.1 sind Zahlen in verschiedenen Zahlensystemen dargestellt.

Tabelle 1
Notation
10 2 8 16
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

Konvertieren von Zahlen von einem Zahlensystem in ein anderes

Um Zahlen von einem Zahlensystem in ein anderes umzuwandeln, ist es am einfachsten, die Zahl zunächst in das Dezimalzahlensystem und dann vom Dezimalzahlensystem in das erforderliche Zahlensystem umzuwandeln.

Konvertieren von Zahlen aus einem beliebigen Zahlensystem in das Dezimalzahlensystem

Mit der Formel (1) können Sie Zahlen aus jedem beliebigen Zahlensystem in das dezimale Zahlensystem umrechnen.

Beispiel 1. Wandeln Sie die Zahl 1011101,001 vom Binärzahlensystem (SS) in das Dezimalzahlensystem SS um. Lösung:

1 ·2 6 +0 ·2 5 + 1 ·2 4 + 1 ·2 3 + 1 ·2 2 + 0 ·2 1 + 1 ·2 0 + 0 ·2 -1 + 0 ·2 -2 + 1 ·2 -3 =64+16+8+4+1+1/8=93,125

Beispiel2. Wandeln Sie die Zahl 1011101,001 vom Oktalzahlensystem (SS) in das Dezimalzahlensystem SS um. Lösung:

Beispiel 3 . Konvertieren Sie die Zahl AB572.CDF vom hexadezimalen Zahlensystem in das dezimale SS. Lösung:

Hier A-ersetzt durch 10, B- um 11, C- um 12, F- bis 15.

Konvertieren von Zahlen aus dem Dezimalzahlensystem in ein anderes Zahlensystem

Um Zahlen vom Dezimalzahlensystem in ein anderes Zahlensystem umzuwandeln, müssen Sie den ganzzahligen Teil der Zahl und den Bruchteil der Zahl getrennt umwandeln.

Der ganzzahlige Teil einer Zahl wird vom dezimalen SS in ein anderes Zahlensystem umgewandelt, indem der ganzzahlige Teil der Zahl sequentiell durch die Basis des Zahlensystems dividiert wird (für binäre SS – durch 2, für 8-äre SS – durch 8, für 16). -ary SS - um 16 usw. ), bis ein ganzer Rest erhalten wird, der kleiner als die Base CC ist.

Beispiel 4 . Lassen Sie uns die Zahl 159 von der dezimalen SS in die binäre SS umwandeln:

159 2
158 79 2
1 78 39 2
1 38 19 2
1 18 9 2
1 8 4 2
1 4 2 2
0 2 1
0

Wie aus Abb. ersichtlich ist. In 1 ergibt die Zahl 159, wenn sie durch 2 geteilt wird, den Quotienten 79 und den Rest 1. Außerdem ergibt die Zahl 79, wenn sie durch 2 geteilt wird, den Quotienten 39 und den Rest 1 usw. Als Ergebnis erhalten wir durch die Bildung einer Zahl aus Divisionsresten (von rechts nach links) eine Zahl im binären SS-Format: 10011111 . Deshalb können wir schreiben:

159 10 =10011111 2 .

Beispiel 5 . Lassen Sie uns die Zahl 615 von der Dezimal-SS in die Oktal-SS umwandeln.

615 8
608 76 8
7 72 9 8
4 8 1
1

Wenn Sie eine Zahl von einer dezimalen SS in eine oktale SS umwandeln, müssen Sie die Zahl der Reihe nach durch 8 dividieren, bis Sie einen ganzzahligen Rest kleiner als 8 erhalten. Als Ergebnis erhalten wir, wenn wir eine Zahl aus Divisionsresten konstruieren (von rechts nach links). eine Zahl in oktaler SS: 1147 (siehe Abb. 2). Deshalb können wir schreiben:

615 10 =1147 8 .

Beispiel 6 . Lassen Sie uns die Zahl 19673 vom dezimalen Zahlensystem in das hexadezimale SS umwandeln.

19673 16
19664 1229 16
9 1216 76 16
13 64 4
12

Wie aus Abbildung 3 ersichtlich ist, ergeben sich durch sukzessives Teilen der Zahl 19673 durch 16 die Reste 4, 12, 13, 9. Im hexadezimalen Zahlensystem entspricht die Zahl 12 C, die Zahl 13 D. Daher unsere Die Hexadezimalzahl ist 4CD9.

Um reguläre Dezimalbrüche (eine reelle Zahl mit einem ganzzahligen Teil Null) in ein Zahlensystem mit der Basis s umzuwandeln, ist es notwendig, diese Zahl sukzessive mit s zu multiplizieren, bis der Bruchteil eine reine Null enthält oder wir die erforderliche Anzahl von Ziffern erhalten . Wenn bei der Multiplikation eine Zahl mit einem ganzzahligen Teil ungleich Null erhalten wird, wird dieser ganzzahlige Teil nicht berücksichtigt (er wird nacheinander in das Ergebnis einbezogen).

Schauen wir uns das Obige anhand von Beispielen an.

Beispiel 7 . Lassen Sie uns die Zahl 0,214 vom dezimalen Zahlensystem in das binäre SS umwandeln.

0.214
X 2
0 0.428
X 2
0 0.856
X 2
1 0.712
X 2
1 0.424
X 2
0 0.848
X 2
1 0.696
X 2
1 0.392

Wie aus Abb. 4 ersichtlich ist, wird die Zahl 0,214 sequentiell mit 2 multipliziert. Wenn das Ergebnis der Multiplikation eine Zahl mit einem ganzzahligen Teil ungleich Null ist, wird der ganzzahlige Teil separat geschrieben (links von der Zahl). und die Zahl wird mit einem ganzzahligen Teil Null geschrieben. Ergibt die Multiplikation eine Zahl mit einem ganzzahligen Teil Null, wird links davon eine Null geschrieben. Der Multiplikationsprozess wird fortgesetzt, bis der Bruchteil eine reine Null erreicht oder wir die erforderliche Anzahl von Ziffern erhalten. Wenn wir die fett gedruckten Zahlen (Abb. 4) von oben nach unten schreiben, erhalten wir die gewünschte Zahl im binären Zahlensystem: 0. 0011011 .

Deshalb können wir schreiben:

0.214 10 =0.0011011 2 .

Beispiel 8 . Lassen Sie uns die Zahl 0,125 vom dezimalen Zahlensystem in das binäre SS umwandeln.

0.125
X 2
0 0.25
X 2
0 0.5
X 2
1 0.0

Um die Zahl 0,125 von der dezimalen SS in die binäre Zahl umzuwandeln, wird diese Zahl sequentiell mit 2 multipliziert. In der dritten Stufe ist das Ergebnis 0. Folglich wird das folgende Ergebnis erhalten:

0.125 10 =0.001 2 .

Beispiel 9 . Lassen Sie uns die Zahl 0,214 vom dezimalen Zahlensystem in das hexadezimale SS umwandeln.

0.214
X 16
3 0.424
X 16
6 0.784
X 16
12 0.544
X 16
8 0.704
X 16
11 0.264
X 16
4 0.224

Nach den Beispielen 4 und 5 erhalten wir die Zahlen 3, 6, 12, 8, 11, 4. Aber im hexadezimalen SS entsprechen die Zahlen 12 und 11 den Zahlen C und B. Daher haben wir:

0,214 10 =0,36C8B4 16 .

Beispiel 10 . Lassen Sie uns die Zahl 0,512 vom dezimalen Zahlensystem in das oktale SS umwandeln.

0.512
X 8
4 0.096
X 8
0 0.768
X 8
6 0.144
X 8
1 0.152
X 8
1 0.216
X 8
1 0.728

Bekommen:

0.512 10 =0.406111 8 .

Beispiel 11 . Lassen Sie uns die Zahl 159,125 vom dezimalen Zahlensystem in das binäre SS umwandeln. Dazu übersetzen wir getrennt den ganzzahligen Teil der Zahl (Beispiel 4) und den gebrochenen Teil der Zahl (Beispiel 8). Wenn wir diese Ergebnisse weiter kombinieren, erhalten wir:

159.125 10 =10011111.001 2 .

Beispiel 12 . Lassen Sie uns die Zahl 19673,214 vom dezimalen Zahlensystem in das hexadezimale SS umwandeln. Dazu übersetzen wir getrennt den ganzzahligen Teil der Zahl (Beispiel 6) und den gebrochenen Teil der Zahl (Beispiel 9). Durch die Kombination dieser Ergebnisse erhalten wir weiter.

Hexadezimales Zahlensystem(auch bekannt als Hexadezimalcode) ist ein Positionszahlensystem mit einer ganzzahligen Basis von 16. Der Begriff Hex (ausgesprochen hex, Kurzform für Englisch hexadezimal) wird in der Literatur manchmal auch verwendet. Die Ziffern dieses Zahlensystems werden üblicherweise in den arabischen Ziffern 0-9 sowie den ersten Zeichen des lateinischen Alphabets A-F verwendet. Die Buchstaben entsprechen den folgenden Dezimalwerten:

  • * A -10;
  • *B—11;
  • *C-12;
  • * D -13;
  • * E - 14;
  • * F - 15.

Somit bilden zehn arabische Ziffern, gepaart mit sechs lateinischen Buchstaben, die sechzehn Ziffern des Systems.

Übrigens können Sie auf unserer Website mit dem Online-Coderechner jeden Text in Dezimal-, Hexadezimal- und Binärcode umwandeln.

Anwendung. Hex-Code Wird häufig in der Low-Level-Programmierung sowie in verschiedenen Computer-Referenzdokumenten verwendet. Die Popularität des Systems wird durch die architektonischen Lösungen moderner Computer gerechtfertigt: Sie haben ein Byte (bestehend aus acht Bits) als minimale Informationseinheit – und der Wert eines Bytes wird praktischerweise mit zwei Hexadezimalziffern geschrieben. Der Bytewert kann von #00 bis #FF (0 bis 255 in Dezimalschreibweise) reichen – mit anderen Worten: using Hexadezimalcode Sie können jeden Zustand des Bytes schreiben, während es keine „zusätzlichen“ Ziffern gibt, die nicht in der Aufzeichnung verwendet werden.

Codiert Unicode Zur Aufzeichnung der Zeichennummer werden vier hexadezimale Ziffern verwendet. Die RGB-Farbnotation (Rot, Grün, Blau) verwendet häufig auch Hexadezimalcode (z. B. ist #FF0000 eine leuchtend rote Farbnotation).

Eine Methode zum Schreiben von Hexadezimalcode.

Mathematische Schreibweise. In der mathematischen Schreibweise wird die Basis des Systems in Dezimalform als Index rechts von der Zahl geschrieben. Die dezimale Schreibweise der Zahl 3032 kann als 3032 10 geschrieben werden, im Hexadezimalsystem hat diese Zahl die Schreibweise BD8 16.

In der Syntax von Programmiersprachen. Die Syntax verschiedener Programmiersprachen legt das Format zum Schreiben einer Zahl unterschiedlich fest Hexadezimalcode:

* Die Syntax einiger Varianten der Assemblersprache verwendet den lateinischen Buchstaben „h“, der rechts von der Zahl steht, zum Beispiel: 20Dh. Wenn eine Zahl mit einem lateinischen Buchstaben beginnt, wird ihr eine Null vorangestellt, zum Beispiel: 0A0Bh. Dies geschieht, um Werte, die Konstanten verwenden, von Konstanten zu unterscheiden. Hexadezimalcode;

* In anderen Assembler-Varianten sowie in Pascal (und seinen Varianten wie Delphi) und einigen Basic-Dialekten wird das Präfix „$“ verwendet: $A15;

* In der Sprache HTML-Markup sowie in kaskadierenden CSS-Dateien wird zur Angabe einer Farbe im RGB-Format mit Hexadezimalschreibweise das Präfix „#“ verwendet: #00DC00.

Wie konvertiert man Hexadezimalcode in ein anderes System?

Konvertieren von Hexadezimal in Dezimal. Um eine Konvertierungsoperation vom Hexadezimalsystem in das Dezimalsystem durchzuführen, müssen Sie die ursprüngliche Zahl als Summe der Produkte der Ziffern in den Ziffern der Hexadezimalzahl und der Potenz der Basis darstellen.

Binäre SS

Sechskant SS

Beispielsweise müssen Sie die Hexadezimalzahl A14 übersetzen: Sie hat drei Ziffern. Unter Verwendung der Regel schreiben wir sie als Summe von Potenzen mit einer Basis von 16:

A14 16 = 10,16 2 + 1,16 1 + 4,16 0 = 10,256 + 1,16 + 4,1 = 2560 + 16 + 4 = 2580 10

Konvertieren von Zahlen von binär in hexadezimal und umgekehrt.

Für die Übersetzung wird ein Notizbuchtisch verwendet. Um eine Zahl von binär in dezimal umzuwandeln, müssen Sie sie von rechts nach links in einzelne Tetraden aufteilen und dann mithilfe einer Tabelle jede Tetrade durch die entsprechende Hexadezimalziffer ersetzen. Wenn die Anzahl der Ziffern außerdem kein Vielfaches von vier ist, müssen rechts von der Zahl die entsprechende Anzahl von Nullen hinzugefügt werden, um die Gesamtzahl zu erhalten Binär-Zahlen wurde ein Vielfaches von vier.

Tabelle mit Notizbüchern zur Übersetzung.

Um von hexadezimal in binär umzuwandeln, müssen Sie den umgekehrten Vorgang durchführen: Ersetzen Sie jede Ziffer durch eine Tetrade aus der Tabelle.

Binäre SS

Oktal SS

Beispiel Konvertierung von hexadezimal nach binär: A5E 16 = 1010 0101 1110 = 101001011110 2

Beispiel Konvertierung von binär nach hexadezimal: 111100111 2 = 0001 1110 0111 = 1E7 16

In diesem Beispiel betrug die Anzahl der Ziffern in der ursprünglichen Binärzahl nicht vier (9), daher wurden führende Nullen hinzugefügt, sodass die Gesamtzahl der Ziffern 12 betrug.

Automatische Übersetzung. Eine schnelle Konvertierung vom hexadezimalen Zahlensystem in eines der drei gängigen Systeme (binär, oktal und dezimal) sowie die umgekehrte Konvertierung kann mit einem Standardrechner durchgeführt werden, der im Windows-Betriebssystem enthalten ist. Öffnen Sie den Rechner und wählen Sie im Menü „Ansicht -> Programmierer“. IN diesen Modus Sie können das aktuell verwendete Zahlensystem einstellen (siehe Menü links: Hex, Dez, Okt, Bin). In diesem Fall führt die Änderung des aktuellen Zahlensystems automatisch zu einer Übersetzung.

Jeder, der mit einem Computer oder anderen digitalen Geräten kommuniziert, ist auf mysteriöse Einträge wie 10FEF gestoßen, die für den Uneingeweihten wie eine Art Code erscheinen. Was verbirgt sich hinter diesen Symbolen? Es stellt sich heraus, dass es sich nur um Zahlen handelt. Diejenigen, die Hexadezimal verwenden

Zahlensysteme

Jedes Schulkind weiß oder hat zumindest irgendwo gehört, dass alle Zahlen, die wir normalerweise verwenden, die Form haben. Sie trägt diesen Namen einfach deshalb, weil sie nur zehn verschiedene Symbole enthält (von 0 bis 9). Mit ihrer Hilfe kann jede Zahl in unserem üblichen System geschrieben werden. Es stellt sich jedoch heraus, dass die Verwendung nicht immer bequem ist. Beim Informationsaustausch zwischen digitalen Geräten ist es beispielsweise am einfachsten, ein Zahlensystem zu verwenden, in dem es nur zwei Ziffern gibt: „0“ – kein Signal – oder „1“ – es liegt ein Signal (Spannung oder etwas anderes) vor. Es heißt binär. Um die Vorgänge in solchen Geräten zu beschreiben, die damit arbeiten, müssen jedoch zu lange und schwer verständliche Notizen gemacht werden. Daher wurde das hexadezimale Zahlensystem erfunden.

Das Konzept des Hexadezimalsystems

Warum verwenden digitale Geräte ein System, das sechzehn verschiedene Symbole enthält? Wie Sie wissen, werden Informationen in Computern in Form von Bytes übertragen, die normalerweise 8 Bits enthalten. Eine Dateneinheit – ein Maschinenwort – umfasst 2 Bytes, also 16 Bit. Somit ist es möglich, mit Hilfe von sechzehn verschiedenen Symbolen die Information zu beschreiben, die das kleinste Teilchen im Austausch darstellt. Das hexadezimale Zahlensystem umfasst unsere üblichen Zahlen (natürlich von 0 bis 9) sowie die Anfangsbuchstaben (A, B, C, D, E, F). Mit Hilfe dieser Symbole ist es üblich, jede Informationseinheit aufzuschreiben. Sie können damit beliebige Rechenoperationen durchführen. Das heißt Addition, Subtraktion, Multiplikation, Division. Das Ergebnis wird ebenfalls eine Hexadezimalzahl sein.

Wo wird es verwendet?

Zur Aufzeichnung von Fehlercodes wird das Hexadezimalsystem verwendet. Sie können während des Betriebs verschiedener auftreten Softwareprodukte. So werden beispielsweise Fehler kodiert Betriebssystem. Jede Nummer ist Standard. Durch die Entschlüsselung anhand der Anleitung können Sie genau herausfinden, welcher Fehler während des Arbeitsprozesses aufgetreten ist. Solche Symbole werden auch beim Schreiben von Programmen in einfachen Sprachen wie Assembler verwendet. Das hexadezimale Zahlensystem ist auch bei Programmierern beliebt, da seine Komponenten sehr einfach in Binärzahlen umgewandelt werden können, die für alle digitalen Technologien „nativ“ sind. Diese Symbole werden auch zur Beschreibung verwendet Farbschemata. Darüber hinaus werden absolut alle Dateien auf dem Computer (Text, Grafiken und sogar Musik oder Video) nach der Ausstrahlung als Sequenz dargestellt. Am bequemsten ist es, die Quelle in Form von Hexadezimalzeichen anzuzeigen.

Selbstverständlich kann jede beliebige Zahl eingetragen werden verschiedene Systeme Abrechnung. Dies ist dezimal, binär und hexadezimal. Um ein Wort von einem in ein anderes zu übersetzen, sollten Sie einen Dienst wie einen Zahlensystemübersetzer nutzen oder es selbst mit einem bestimmten Algorithmus tun.

Um Programme in Assembly zu schreiben, müssen Sie das hexadezimale Zahlensystem verstehen. Daran ist nichts Kompliziertes. Wir verwenden im Leben das Dezimalsystem. Ich bin sicher, dass Sie es alle kennen, deshalb werde ich versuchen, das Hexadezimalsystem anhand einer Analogie zum Dezimalsystem zu erklären.

Wenn wir also im Dezimalsystem zu einer beliebigen Zahl auf der rechten Seite eine Null hinzufügen, erhöht sich diese Zahl um das Zehnfache. Zum Beispiel: 1 x 10 = 10; 10 x 10 = 100; 100 x 10 = 1000 usw. In diesem System verwenden wir Zahlen von 0 bis 9, d.h. zehn verschiedene Zahlen (tatsächlich heißt es deshalb Dezimalzahl).

Im Hexadezimalsystem verwenden wir sechzehn „Ziffern“. Ich habe das Wort „Ziffern“ ausdrücklich in Anführungszeichen geschrieben, weil... Es werden nicht nur Zahlen verwendet. Und wirklich, wie kann das sein? Lassen Sie es mich erklären: Von 0 bis 9 zählen wir genauso wie im Dezimalsystem, aber dann sieht es so aus: A, B, C, D, E, F. Die Zahl F ist nicht schwierig Zählen, wird es im Dezimalsystem gleich 15 sein (siehe Tabelle 1).

Dezimalzahl

Hexadezimale Zahl

Tabelle 1. Dezimal- und Hexadezimalsysteme.

Wenn wir also rechts neben einer Zahl im Hexadezimalsystem eine Null hinzufügen, erhöht sich diese Zahl um16 einmal.

Beispiel 1: 1 x 16 = 10; 10 x 16 = 100; 100 x 16 = 1000 usw.

Konnten Sie in Beispiel 1 hexadezimale Zahlen von dezimalen Zahlen unterscheiden? Und aus dieser Serie: 10, 12, 45, 64, 12, 8, 19? Diese können entweder hexadezimal oder dezimal sein. Um Verwechslungen zu vermeiden und der Computer eine Zahl eindeutig von einer anderen unterscheiden zu können, ist es in Assembler üblich, das Symbol h oder H nach einer Hexadezimalzahl zu setzen ( H ist eine Abkürzung für Englisch. hexadezimal (hexadezimal). Der Kürze halber wird es manchmal auch einfach genannt Verhexen ) . Und schreiben Sie nichts nach der Dezimalstelle. Weil Zahlen von 0 bis 9 haben in beiden Systemen die gleiche Bedeutung, dann sind die als 5 und 5h geschriebenen Zahlen gleich.

Das. Beispiel 1 (siehe oben) wäre korrekter, so zu schreiben: 1 x 16 = 10h; 10h x 16 = 100h; 100h x 16 = 1000h. Oder so: 1h x 10h = 10h; 10h x 10h = 100h; 100h x 10h = 1000h.

Wir werden uns in den folgenden Ausgaben mit der Frage befassen, warum das Hexadezimalsystem benötigt wird. Für unser Beispielprogramm, das weiter unten besprochen wird, müssen wir zunächst über die Existenz von Hexadezimalzahlen Bescheid wissen.

Fassen wir also zusammen. Das hexadezimale Zahlensystem besteht aus 10 Ziffern (von 0 bis 9) und 6 Buchstaben des lateinischen Alphabets (A, B, C, D, E, F). Wenn wir rechts neben einer beliebigen Zahl im Hexadezimalsystem eine Null hinzufügen, erhöht sich diese Zahl um16 einmal. Es ist sehr wichtig, dieses Thema zu verstehen, da wir es beim Schreiben von Programmen ständig verwenden werden.

Nun ein wenig darüber, wie ich Beispiele in Assembly erstellen werde. Es ist nicht ganz praktisch, sie im HTML-Format darzustellen, daher gibt es zunächst den Programmcode selbst mit nummerierten Zeilen und direkt danach Erklärungen und Anmerkungen.

Ungefähr so:

Linien Programmcode
(1) mov ah,9

Erläuterungen:

In Zeile (1) machen wir dies und in Zeile (15) machen wir jenes.

Große Anfrage: Kopieren Sie KEINE Programme von einer Seite in die Zwischenablage und fügen Sie sie dann in Notepad (oder anderswo) ein! Geben Sie sie manuell in einem Texteditor ein. Wenn Sie über einen Drucker verfügen, wählen Sie das Programm aus, drucken Sie das ausgewählte Fragment aus und übertragen Sie es dann vom Papier in den Editor. Alle Beispiele müssen selbst getippt werden! Dadurch wird das Auswendiglernen der Operatoren beschleunigt.

Und weiter. Im Assembler gibt es keinen Unterschied zwischen Klein- und GROSSBUCHSTABEN. Aufzeichnungen des Formulars:

Der Assembler nimmt sie auf die gleiche Weise wahr. Sie können den Assembler natürlich zwingen, zwischen Klein- und Großbuchstaben zu unterscheiden, aber wir werden dies vorerst nicht tun. Um das Programm leichter lesbar zu machen, ist es am besten, Operatoren in Kleinbuchstaben einzugeben und die Namen von Unterprogrammen und Beschriftungen in Großbuchstaben zu beginnen. Aber es kommt darauf an, wer sich wohlfühlen wird.

Kommen wir also zu unserem ersten Programm:

(1) CSEG-Segment

(2)org 100h

(4)Beginn:

(6) mov ah,9

(7) mov dx,offset Nachricht

(8)int 21h

(10) int 20h

(11)

(12) Nachrichtendatenbank „Hallo, Welt!$“

(13) CSEG endet

(14) Ende Anfang

Um alle Operatoren in diesem Beispiel zu erklären, benötigen wir mehrere Editionen. Daher verzichten wir an dieser Stelle einfach auf die Beschreibung einiger Befehle. Gehen Sie einfach davon aus, dass es so sein sollte. Wir werden uns diese Betreiber in naher Zukunft im Detail ansehen. Die Zeilen mit den Nummern (1), (2) und (13) ignorieren Sie einfach.

Die Zeilen (3), (5), (9) und (11) bleiben leer. Dies geschieht aus Gründen der Übersichtlichkeit. Der Assembler wird sie einfach weglassen.

Betrachten wir nun die verbleibenden Operatoren. Der Programmcode beginnt mit Zeile (4). Dies ist eine Markierung, die dem Assembler den Anfang des Codes mitteilt. Zeile (14) enthält die Operatoren end Begin ( Beginnen Sie mit Englisch Start; Ende Ende). Dies ist das Ende des Programms. Im Allgemeinen anstelle des Wortes Beginnen man hätte etwas anderes verwenden können. Zum Beispiel, Start:. In diesem Fall müssten wir das Programm beenden Ende Anfang (14).

In den Zeilen (6) (8) wird die Meldung Hello, world! angezeigt. Hier müssen wir kurz auf Prozessorregister eingehen (wir werden uns in der nächsten Ausgabe ausführlicher mit diesem Thema befassen).

Ein Prozessorregister ist ein speziell zugewiesener Speicher zum Speichern einer Zahl.

Zum Beispiel:

Wenn wir zwei Zahlen addieren wollen, dann schreiben wir das in der Mathematik so:

A, B und C Dies sind eine Art Register (wenn wir von einem Computer sprechen), in denen einige Daten gespeichert werden können. A=5 kann gelesen werden als: Weisen Sie A die Nummer 5 zu .

Um einem Register einen Wert zuzuweisen, gibt es in Assembler einen mov-Operator (vom englischen move load). Zeile (6) sollte so gelesen werden: Laden in das Register AH.Nummer 9 (mit anderen Worten, wir weisen zu AH.Nummer 9). Im Folgenden schauen wir uns an, warum dies notwendig ist.

In Zeile (7) laden wir in das Register DX Nachrichtenadresse für die Ausgabe (in in diesem Beispiel Dies wird eine Zeichenfolge seinHallo Welt!$).

Auf Unterbrechungen wird in den folgenden Ausgaben ausführlich eingegangen. Hier werde ich ein paar Worte sagen.

Unterbrechen MS-DOS es ist eine Art Unterprogramm (Teil MS-DOS), das dauerhaft im Speicher liegt und jederzeit von jedem Programm aus aufgerufen werden kann.

Betrachten wir das oben Gesagte anhand eines Beispiels (Hinweise im Kleingedruckten):

Programm zum Addieren zweier Zahlen

HomeProgramme

A=5 Wir tragen den Wert 5 in die Variable A ein

B=8 in die Variable B den Wert 8

Aufruf von Unterprogrammen

jetzt ist C gleich 13

A=10 das Gleiche, nur unterschiedliche Zahlen

B=25

Aufruf von Unterprogrammen

jetzt ist C gleich 35

Ende des Programms

Unterprogramm-Ergänzung

C=A+B

ReturnFromSubroutine Wir kehren zu dem Ort zurück, von dem aus wir angerufen haben

EndSubroutine

In diesem Beispiel haben wir das Unterprogramm zweimal aufgerufen Zusatz, wodurch zwei in Variablen übergebene Zahlen hinzugefügt wurden A und B . Das Ergebnis wird in der Variablen C abgelegt. Wenn ein Unterprogramm aufgerufen wird, merkt sich der Computer, von wo aus es aufgerufen wurde, und wenn das Unterprogramm seine Ausführung beendet hat, kehrt der Computer zu der Stelle zurück, von der es aufgerufen wurde. Das. Sie können Unterprogramme beliebig oft von überall aus aufrufen.

Wenn wir Zeile (8) eines Assembler-Programms ausführen, rufen wir eine Unterroutine (in diesem Fall Interrupt genannt) auf, die die Zeile auf dem Bildschirm anzeigt. Zu diesem Zweck legen wir tatsächlich die erforderlichen Werte in Registern ab. Alle notwendige Arbeit(Zeilenausgabe, Cursorbewegung) wird vom Unterprogramm übernommen. Diese Zeile kann folgendermaßen gelesen werden: Rufen Sie den einundzwanzigsten Interrupt auf ( int aus dem Englischen unterbrechen unterbrechen). Bitte beachten Sie, dass nach der Zahl 21 ein Buchstabe steht H . Wie wir bereits wissen, handelt es sich um eine Hexadezimalzahl (33 im Dezimalformat). Natürlich hindert uns nichts daran, die Leitung zu ersetzen int 21h bis int 33. Das Programm wird ordnungsgemäß funktionieren. In Assembler ist es üblich, die Interrupt-Nummer hexadezimal anzugeben.

In Zeile (10) rufen wir, wie Sie vielleicht erraten haben, Interrupt 20 auf H . Um diesen Interrupt aufzurufen, müssen Sie keine Werte in den Registern angeben. Es führt nur eine Aufgabe aus: das Beenden des Programms (Beenden zu DOS). Als Ergebnis der Ausführung von Interrupt 20h kehrt das Programm dorthin zurück, wo es gestartet (geladen, aufgerufen) wurde. Zum Beispiel in Norton Commander oder DOS Navigator.

Zeile (12) enthält die auszugebende Meldung. Erstes Wort ( Nachricht Nachricht) Nachrichtentitel. Es kann alles sein (zum Beispiel Chaos oder Schnur usw.). UM Achten Sie auf Zeile (7), in der wir in das Register laden DX unsere Nachrichtenadresse.

Wir können eine weitere Zeile erstellen, die wir aufrufen werden Mess2. Fügen Sie dann ab Zeile (9) die folgenden Befehle ein:

(10) mov dx,offset Mess2

(13) Nachrichtendatenbank „Hallo, Welt!$“

(14) Mess2 db „Ich bin es! $“

und unser Programm neu zusammenstellen. Ich hoffe, Sie können erraten, was passieren wird

beachten letztes Zeichen in Linien Nachricht und Nachricht2 - $. Es zeigt auf das Ende der Zeile. Wenn wir es entfernen, dann 21 H Der Interrupt setzt die Ausgabe fort, bis er irgendwo im Speicher auf ein Zeichen trifft $. Auf dem Bildschirm werden wir sehen Müll .

Wenn Sie über einen Debugger verfügen, können Sie sehen, wie unser Programm funktioniert.

Der Zweck dieser Ausgabe bestand nicht darin, sie zu verstehen im Detail mit jedem Betreiber. Das ist unmöglich, weil Du hast noch nicht genug Wissen. Ich glaube, dass Sie nach 3-4 Veröffentlichungen das Prinzip und die Struktur eines Assembly-Programms verstehen werden. Vielleicht erschien Ihnen die Assemblersprache äußerst kompliziert, aber glauben Sie mir, das ist auf den ersten Blick so.

gastroguru 2017