bin_dec_hex - Wie man die Binär-, Dezimal- und Hexadezimalschreibweise verwendet.
Die meisten Menschen verwenden das dezimale Zahlensystem. Dieses System verwendet zehn Symbole zur Darstellung von Zahlen. Wenn diese zehn Symbole aufgebraucht sind, beginnen sie von vorne und erhöhen die Position nach links. Die Ziffer 0 wird nur angezeigt, wenn es das einzige Symbol in der Sequenz ist oder wenn es nicht das erste ist.
Wenn Ihnen das kryptisch vorkommt, habe ich es gerade in Zahlen ausgedrückt:
0
1
2
3
4
5
6
7
8
9
10
11
12
13usw.
Jedes Mal, wenn die Ziffer Neun erhöht wird, wird sie auf 0 zurückgesetzt und die Position davor (nach links) wird erhöht (von 0 auf 1). Dann kann die Zahl 9 als 00009 angesehen werden, und wenn wir 9 erhöhen sollten, setzen wir sie auf Null zurück und erhöhen die Ziffer direkt vor der 9, sodass die Zahl 00010 wird. Führende Nullen schreiben wir nicht, es sei denn, es ist die einzige Ziffer (Zahl). 0). Und natürlich schreiben wir Nullen, wenn sie irgendwo innerhalb oder am Ende einer Zahl vorkommen:
"00010" -> " 0010" -> " 010" -> " 10"
aber nicht
" 1 ".
Das war ziemlich einfach, das wussten Sie bereits. Warum habe ich es erzählt? Nun, Computer stellen Zahlen normalerweise nicht mit 10 verschiedenen Ziffern dar. Sie verwenden nur zwei unterschiedliche Symbole, nämlich 0 und 1. Wenden Sie die gleichen Regeln auf diesen Ziffernsatz an, und Sie erhalten das binäre Zahlensystem:
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101usw.
Wenn Sie die Anzahl der Zeilen zählen, werden Sie feststellen, dass es sich wieder um 14 verschiedene Zahlen handelt. Die Zahlen sind die gleichen und bedeuten dasselbe wie in der ersten Liste, wir haben lediglich eine andere Darstellung verwendet. Das bedeutet, dass Sie die verwendete Darstellung oder das sogenannte Nummerierungssystem oder die Basis kennen müssen. Wenn wir das verwendete Nummerierungssystem nicht explizit angeben, verwenden wir normalerweise implizit das Dezimalsystem. Wenn wir ein anderes Nummerierungssystem verwenden möchten, müssen wir dies klarstellen. Dafür gibt es einige weit verbreitete Methoden. Eine gängige Form ist die Schreibweise 1010(2), was bedeutet, dass Sie eine Zahl in ihrer Binärdarstellung notiert haben. Es ist die Zahl zehn. Wenn Sie 1010 ohne Angabe der Basis schreiben würden, wird die Zahl als Tausendzehn unter Verwendung der Basis 10 interpretiert.
In Büchern ist eine andere Form üblich. Es verwendet Indizes (kleine Zeichen, mehr oder weniger zwischen zwei Zeilen). In diesem Fall können Sie die Klammern weglassen und die Zahl in normalen Zeichen schreiben, gefolgt von einer kleinen Zwei direkt dahinter.
Da das verwendete Zahlensystem auch Basis genannt wird, spricht man bei der Zahl 1100 zur Basis 2, bei der Zahl 12 zur Basis 10.
Im Binärsystem ist es üblich, führende Nullen zu schreiben. Die Zahlen werden je nach Kontext in Vierer-, Achter- oder Sechzehnerreihen aufgeschrieben.
Wir können die binäre Form verwenden, wenn wir mit Computern sprechen (...Programmierung...), aber die Zahlen werden groß dargestellt. Die Zahl 65'535 (im Dezimalsystem wird zur besseren Lesbarkeit oft ein ' verwendet, um Blöcke mit drei Ziffern zu trennen) würde als 1111111111111111(2) geschrieben, was dem 16-fachen der Ziffer 1 entspricht. Dies ist schwierig und fehleranfällig. Daher verwenden wir normalerweise eine andere Basis, die sogenannte Hexadezimalzahl. Es werden 16 verschiedene Symbole verwendet. Zuerst werden die Symbole aus dem Dezimalsystem verwendet, danach geht es mit den alphabetischen Zeichen weiter. Wir erhalten 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E und F. Dieses System wird gewählt, weil sich die Hexadezimalform sehr gut in das Binärsystem umwandeln lässt leicht (und zurück).
Es gibt noch ein anderes System, das sogenannte Oktalsystem. Dies war früher üblicher, wird aber nicht mehr sehr oft verwendet. Da Sie es manchmal verwenden, sollten Sie sich daran gewöhnen. Wir zeigen es Ihnen weiter unten. Es ist die gleiche Geschichte wie bei den anderen Darstellungen, allerdings mit acht unterschiedlichen Symbolen.
Binary (2)
Octal (8)
Decimal (10)
Hexadecimal (16)
(2) (8) (10) (16)
00000 0 0 0
00001 1 1 1
00010 2 2 2
00011 3 3 3
00100 4 4 4
00101 5 5 5
00110 6 6 6
00111 7 7 7
01000 10 8 8
01001 11 9 9
01010 12 10 A
01011 13 11 B
01100 14 12 C
01101 15 13 D
01110 16 14 E
01111 17 15 F
10000 20 16 10
10001 21 17 11
10010 22 18 12
10011 23 19 13
10100 24 20 14
10101 25 21 15Die meisten heutzutage verwendeten Computer verwenden Bytes mit acht Bits. Das bedeutet, dass sie jeweils acht Bits speichern. Sie können sehen, warum das Oktalsystem dafür nicht das praktischste ist: Sie würden drei Ziffern benötigen, um die acht Bits darzustellen, und das bedeutet, dass Sie eine vollständige Ziffer verwenden müssten, um nur zwei Bits darzustellen (2+3+3). =8). Das ist eine Verschwendung. Für hexadezimale Ziffern benötigen Sie nur zwei Ziffern, die vollständig verwendet werden:
(2) (8) (10) (16)
11111111 377 255 FFWarum Binär und Hexadezimal schnell umgerechnet werden können, sehen Sie: Für jede Hexadezimalziffer gibt es genau vier Binärziffern. Nehmen Sie eine Binärzahl: Nehmen Sie vier Ziffern von rechts und bilden Sie daraus eine Hexadezimalzahl (siehe Tabelle oben). Wiederholen Sie dies, bis keine Ziffern mehr vorhanden sind. Und umgekehrt: Nehmen Sie eine Hexadezimalzahl. Notieren Sie für jede Ziffer ihr binäres Äquivalent.
Computer (oder vielmehr die darauf laufenden Parser) hätten Schwierigkeiten, eine Zahl wie 1234(16) umzuwandeln. Daher werden hexadezimale Zahlen mit einem Präfix angegeben. Dieses Präfix hängt von der Sprache ab, in der Sie schreiben. Einige der Präfixe sind 0x für C, $für Pascal und # für HTML. Es wird allgemein angenommen, dass eine Zahl, die mit einer Null beginnt, oktal ist. Es spielt keine Rolle, was verwendet wird, solange Sie wissen, was es ist. Ich verwende 0x für hexadezimal, % für binär und 0 für oktal. Die folgenden Zahlen sind alle gleich, nur ihre Darstellung (Basis) ist unterschiedlich: 021 0x11 17 %00010001
Um Arithmetik und Umrechnungen durchführen zu können, müssen Sie noch etwas verstehen. Es ist etwas, das Sie bereits wissen, aber vielleicht sehen Sie es noch nicht:
Wenn Sie 1234 aufschreiben (ohne Präfix, also dezimal), sprechen Sie von der Zahl eintausendzweihundertvierunddreißig. In einer Art Formel:
1 * 1000 = 1000
2 * 100 = 200
3 * 10 = 30
4 * 1 = 4
This can also be written as:
1 * 10^3
2 * 10^2
3 * 10^1
4 * 10^0wobei ^zur Potenz von bedeutet.
Wir verwenden die Basis 10 und die Positionen 0,1,2 und 3. Die Position ganz rechts sollte NICHT mit 10 multipliziert werden. Die zweite von rechts sollte einmal mit 10 multipliziert werden. Die dritte von rechts wird multipliziert mit 10 zweimal. Dies gilt für alle verwendeten Positionen.
Das Gleiche gilt auch für alle anderen Darstellungen:
0x1234 wird sein
1 * 16^3
2 * 16^2
3 * 16^1
4 * 16^0
01234 would be
1 * 8^3
2 * 8^2
3 * 8^1
4 * 8^0Dieses Beispiel kann nicht für Binärdateien durchgeführt werden, da dieses System nur zwei Symbole verwendet. Ein anderes Beispiel:
%1010 wäre
1 * 2^3
0 * 2^2
1 * 2^1
0 * 2^0Es wäre einfacher gewesen, es in seine hexadezimale Form umzuwandeln und einfach %1010 in 0xA zu übersetzen. Nach einer Weile gewöhnt man sich daran. Sie müssen keine Berechnungen mehr durchführen, wissen aber einfach, dass 0xA 10 bedeutet.
Um eine Dezimalzahl in eine Hexadezimalzahl umzuwandeln, können Sie die nächste Methode verwenden. Es wird einige Zeit dauern, die Schätzungen durchzuführen, aber es wird einfacher sein, wenn Sie das System häufiger verwenden. Wir werden uns anschließend noch einen anderen Weg ansehen.
Zunächst müssen Sie wissen, wie viele Positionen im anderen System verwendet werden. Dazu müssen Sie die maximale Anzahl kennen, die Sie verwenden werden. Nun, das ist nicht so schwer, wie es aussieht. Im Dezimalformat ist die maximale Zahl, die Sie mit zwei Ziffern bilden können, 99. Das Maximum für drei: 999. Die nächste Zahl würde eine zusätzliche Position benötigen. Wenn Sie diese Idee umkehren, werden Sie sehen, dass die Zahl ermittelt werden kann, indem man 10^3 (10*10*10 ist 1000) minus 1 oder 10^2 minus eins nimmt.
Dies ist auch hexadezimal möglich:
16^4 = 0x10000 = 65536
16^3 = 0x1000 = 4096
16^2 = 0x100 = 256
16^1 = 0x10 = 16Wenn eine Zahl kleiner als 65.536 ist, passt sie an vier Stellen. Wenn die Zahl größer als 4'095 ist, müssen Sie Position 4 verwenden. Wie oft Sie 4'096 von der Zahl subtrahieren können, ohne unter Null zu fallen, ist die erste Ziffer, die Sie notieren. Dies ist immer eine Zahl von 1 bis 15 (0x1 bis 0xF). Machen Sie dasselbe für die anderen Positionen.
Versuchen wir es mit 41'029. Es ist kleiner als 16^4, aber größer als 16^3-1. Das bedeutet, dass wir vier Positionen nutzen müssen. Wir können zehnmal 16^3 von 41'029 subtrahieren, ohne unter Null zu fallen. Die Ziffer ganz links ist daher A, also haben wir 0xA????. Die Zahl reduziert sich auf 41'029 - 10*4'096=41'029-40'960=69. 69 ist kleiner als 16^3, aber nicht größer als 16^2-1. Die zweite Ziffer ist also 0 und wir haben jetzt 0xA0??. 69 ist kleiner als 16^2 und größer als 16^1-1. Wir können 16^1 (was einfach 16 ist) viermal subtrahieren und 4 aufschreiben, um 0xA04? zu erhalten. Subtrahieren Sie 64 von 69 (69 - 4*16) und die letzte Ziffer ist 5 -> 0xA045.
Die andere Methode baut die Zahl von rechts auf. Versuchen wir es noch einmal mit 41'029. Teilen Sie durch 16 und verwenden Sie keine Brüche (nur ganze Zahlen).
41029/16 ist 2564 mit einem Rest von 5. Schreiben Sie 5 auf. 2564/16 ist 160 mit einem Rest von 4. Schreiben Sie die 4 vor der 5. 160/16 ist 10 ohne Rest. Stellen Sie 45 mit 0 voran. 10/16 liegt unter eins. Beenden Sie hier und stellen Sie 0xA voran. Am Ende erhalten Sie 0xA045.
Welche Methode Sie verwenden, bleibt Ihnen überlassen. Verwenden Sie, was auch immer für Sie funktioniert. Ich verwende sie beide, ohne dass ich sagen kann, welche Methode ich jeweils verwende, es kommt einfach auf die Anzahl an, denke ich. Tatsache ist, dass einige Zahlen beim Programmieren häufig vorkommen. Wenn die Zahl nahe bei Eins liegt, die mir bekannt ist, verwende ich die erste Methode (z. B. 32'770, was 32'768 + 2 entspricht und ich weiß nur, dass es 0x8000 + 0x2=0x8002 ist).
Für Binärdateien kann der gleiche Ansatz verwendet werden. Die Basis ist 2 und nicht 16, und die Anzahl der Positionen wird schnell wachsen. Die Verwendung der zweiten Methode hat den Vorteil, dass Sie sehr einfach erkennen können, ob Sie eine Null oder eine Eins aufschreiben sollten: Wenn Sie durch zwei dividieren, ist der Rest Null, wenn es eine gerade Zahl ist, und eins, wenn es eine ungerade Zahl ist:
41029 / 2 = 20514 remainder 1
20514 / 2 = 10257 remainder 0
10257 / 2 = 5128 remainder 1
5128 / 2 = 2564 remainder 0
2564 / 2 = 1282 remainder 0
1282 / 2 = 641 remainder 0
641 / 2 = 320 remainder 1
320 / 2 = 160 remainder 0
160 / 2 = 80 remainder 0
80 / 2 = 40 remainder 0
40 / 2 = 20 remainder 0
20 / 2 = 10 remainder 0
10 / 2 = 5 remainder 0
5 / 2 = 2 remainder 1
2 / 2 = 1 remainder 0
1 / 2 below 0 remainder 1Notieren Sie die Ergebnisse von rechts nach links: %1010000001000101
Vierergruppe:
%1010000001000101
%101000000100 0101
%10100000 0100 0101
%1010 0000 0100 0101In Hexadezimal umwandeln: 0xA045
Gruppieren Sie %1010000001000101 nach drei und konvertieren Sie es in eine Oktalzahl:
%1010000001000101
%1010000001000 101
%1010000001 000 101
%1010000 001 000 101
%1010 000 001 000 101
%1 010 000 001 000 101
%001 010 000 001 000 101
1 2 0 1 0 5 --> 0120105
So: %1010000001000101 = 0120105 = 0xA045 = 41029
Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029(10)
Or: 1010000001000101(2) = 120105(8) = A045(16) = 41029Beim Addieren von Zahlen konvertieren Sie diese zunächst in ihre Dezimalform und nach der Addition wieder in ihre ursprüngliche Form. Wenn Sie das andere Zahlensystem häufig verwenden, werden Sie feststellen, dass Sie direkt in der verwendeten Basis rechnen können. In jeder Darstellung ist es dasselbe: Addieren Sie die Zahlen rechts, notieren Sie die Ziffer ganz rechts aus dem Ergebnis, merken Sie sich die anderen Ziffern und verwenden Sie sie in der nächsten Runde. Fahren Sie mit der zweiten Ziffer von rechts fort und so weiter:
%1010 + %0111 --> 10 + 7 --> 17 --> %00010001
wird werden
%1010
%0111 +
||||
|||+-- add 0 + 1, result is 1, nothing to remember
||+--- add 1 + 1, result is %10, write down 0 and remember 1
|+---- add 0 + 1 + 1(remembered), result = 0, remember 1
+----- add 1 + 0 + 1(remembered), result = 0, remember 1
nothing to add, 1 remembered, result = 1
--------
%10001 is the result, I like to write it as %00010001Versuchen Sie bei niedrigen Werten, die Berechnungen selbst durchzuführen und überprüfen Sie sie anschließend mit einem Taschenrechner. Je öfter Sie die Berechnungen selbst durchführen, desto mehr werden Sie feststellen, dass Sie keine Fehler gemacht haben. Am Ende werden Sie Berechnungen in anderen Basen genauso einfach durchführen wie in Dezimalzahlen.
Wenn die Zahlen größer werden, muss einem klar werden, dass man einen Computer nicht einfach Computer nennt, nur um einen schönen Namen zu haben. Es gibt viele verschiedene Taschenrechner, nutzen Sie sie. Für Unix können Sie bc verwenden, was für Binary Calculator steht. Es rechnet nicht nur im Dezimalformat, sondern in allen Basen, die Sie jemals verwenden möchten (einschließlich Binär).
Für Windows-Nutzer: Starten Sie den Rechner (Start->Programme->Zubehör->Rechner) und klicken Sie ggf. auf Ansicht->Wissenschaftlich. Sie verfügen nun über einen wissenschaftlichen Taschenrechner und können binär oder hexadezimal rechnen.
Ich hoffe, Ihnen haben die Beispiele und ihre Beschreibungen gefallen. Wenn Sie dies tun, helfen Sie anderen Menschen, indem Sie sie auf dieses Dokument verweisen, wenn sie grundlegende Fragen stellen. Sie werden nicht nur ihre Antwort bekommen, sondern gleichzeitig noch viel mehr lernen.
Alex van den Bogaerdt