Notation für Binärzahlen wie 1000100B - 1

„Hallo, Amigo!“

„Hallo, Bilaabo!“

„Ich möchte Ihnen ein wenig über verschiedene Nummerierungssysteme erzählen.“

„Sie haben bereits gehört, dass Menschen das Dezimalsystem verwenden. Hier sind die wichtigsten Fakten dieses Systems:

1)  Zum Schreiben von Zahlen werden 10 Ziffern verwendet: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.

2)  Die Zahl 543 bedeutet 5 Hunderter + 4 Zehner + 3 Einer.

„Dies entspricht dem Schreiben von 5*100 + 4*10 + 3*1, was als 5*10 2 + 4*10 1 + 3*10 0 geschrieben werden kann .

Beachten Sie, dass Tausender, Hunderter, Zehner und Einer Potenzen der Zahl 10 sind.

1) Eins ist 10 hoch null.

2)  Zehn ist 10 hoch.

3) Einhundert ist 10 hoch 2.

4)  Eintausend ist 10 in der dritten Potenz usw.

„Ja. Verstanden.“

„Aber jetzt stellen Sie sich vor, dass wir nur 8 Ziffern haben. Dann haben wir das Oktalsystem. Hier sind seine wichtigsten Fakten:“

1)  Zum Schreiben von Zahlen werden 8 Ziffern verwendet: 0, 1, 2, 3, 4, 5, 6, 7.

2)  Die Zahl 543 8 bedeutet 5*8 2 +4*8 1 +3*8 0 . Mit anderen Worten, es ist 5*64 + 4*8 + 3*1 = 320+32+3 = 320+32+3=355 10

Ich habe 8 und 10 tiefgestellt geschrieben, um anzugeben, wie viele Ziffern zur Darstellung der Zahl verwendet werden.

„Ich glaube, ich verstehe. Ich glaube, ich könnte eine Zahl vom Oktalsystem in das Dezimalsystem umwandeln. Aber den anderen Weg könnte ich wahrscheinlich nicht machen.“

„Es ist nicht so schwierig. Stellen Sie sich vor, Sie müssten mehrere Lastwagen benutzen, um einen Sandhaufen zu bewegen. Sie haben Muldenkipper, normale Lastwagen und sehr kleine Lastwagen. Aber die Lastwagen können nicht fahren, wenn sie nicht voll sind.“

"Wie würdest du es machen?"

„Zuerst habe ich die Muldenkipper vollgetankt, weil sie die größten sind. Als ich dann gesehen habe, dass nicht genug Sand da war, um den Laster zu füllen, bin ich auf die kleineren Fahrzeuge umgestiegen. Und dann auf die noch kleineren.“

„Hier ist es eigentlich ganz ähnlich. Versuchen wir, die Zahl 355 10 wieder in Oktal umzuwandeln.“

„Zuerst teilen wir es durch 64 (8 2 ) und erhalten 5 mit einem Rest von 35. Das bedeutet, dass die erste Ziffer unserer Zahl 5 ist. Dann teilen wir den Rest durch 8 (8 1 ) und erhalten 4 mit einem Rest.“ von 3. Somit erhalten wir die Zahl 543 8 .

„Man kann sich übrigens auch in die andere Richtung bewegen. Immerhin 543 8 == 5*64+4*8+3 == ((5)*8+4)*8+3. Unsere oktalen „Zehner.“ „ und „Hunderter“ müssen durch 8 geteilt werden. Daher ist der Rest der Division durch 8 unsere Oktalziffern.“

„Teilen wir zunächst 355 durch 8. Wir erhalten 44 mit einem Rest von 3. Das heißt, 355=44*8+3. Und 44 kann als 5*8+4 dargestellt werden. Somit ist 355= (5*8+ 4)*8+3; Hier sind unsere Ziffern: 5, 4, 3. Die Zahl, die wir suchen, ist 543 8 .

„Ich denke, ich verstehe es, aber ich muss ein wenig üben, um alles vollständig zu verstehen.“

„Beim Programmieren werden häufig Zahlen mit unterschiedlichen Basen verwendet (d. h. die Anzahl der im Zahlensystem verwendeten Ziffern). Am beliebtesten sind 2, 8, 10, 16 und 64.“

„Aber warum ist das notwendig? Warum brauchen wir Zahlen mit 2, 8, 16 oder 64 Ziffern?“

„Es geht darum, wie der Prozessor intern funktioniert. Ganz vereinfacht gesagt: Wenn Strom durch einen Draht fließt, dann sagen wir, dass sein Wert 1 ist; wenn kein Strom vorhanden ist, dann ist sein Wert 0. Alle Zahlen werden in Speicherzellen gespeichert. Diese Zellen haben ein sehr einfaches Design. Und sie können nur 0 oder 1 speichern.

„Aber eine solche Vereinfachung (nur 0 oder 1) ermöglichte es, die Elemente im Prozessor und im Speicher sehr klein zu machen. Moderne Prozessoren und Speichermodule enthalten Milliarden verschiedener Elemente. Und ihre Fläche beträgt oft nicht mehr als einen Quadratzentimeter.“

„Whoa. Jetzt weiß ich es.“

„Jetzt wenden wir uns Binärzahlen zu. Hier haben wir das Gleiche wie bei Oktalzahlen, nur einfacher.“

1)  Zum Schreiben von Zahlen werden 2 Ziffern verwendet: 0, 1.

2)  Die Zahl 101 2 bedeutet 1*2 2 + 0*2 1 + 1*2 0 . Mit anderen Worten, es ist 1*4+0*2+1*1 =4+1=51 10

„Ja. Ich erinnere mich. Eine Zelle, die entweder den Wert 0 oder 1 haben kann, wird Bit genannt. Sie kann jedoch nicht sehr viele Informationen speichern, daher werden sie in Gruppen von 8 zusammengefasst. Diese Gruppen werden Bytes genannt. "

"Genau. Ein Byte ist eine Gruppe von acht Bits. Es kann die folgenden Werte speichern: 00000000, 00000001, ... 11111111. Diese Werte entsprechen den Dezimalzahlen 0,1, ... 255. Das ergibt insgesamt 256 Werte.“

Was ist die größte Ganzzahl in Java? Oder besser gesagt, um welchen Typ handelt es sich?

"Ein Long. Ein Long besteht aus 8 Bytes. Mit anderen Worten, 64 Bits. Es kann Werte von -2 63 bis 2 63 -1 speichern.

„Ja. Ich werde nicht darauf eingehen, wie man Zahlen von Dezimalzahlen in Binärzahlen umwandelt oder umgekehrt. Sonst würde die Lektion zu lang werden.“

„Lassen Sie uns stattdessen etwas mehr über das Hexadezimalsystem sprechen.“

„Ja, das ist sehr interessant. Für das Binär- und Oktalsystem haben wir einfach die Ziffern abgeschafft, beginnend mit zwei bzw. acht. Aber was machen wir hier? Neue Ziffern hinzufügen?“

„Genau! Schau dir das an:“

1) 16 Ziffern werden zum Schreiben von Zahlen verwendet: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

2) Die Zahl 543 16 bedeutet 5*16 2 + 4*16 1 + 3*16 0 . Mit anderen Worten, es ist 5*256+4*16+3*1 = 1280+64+3 = 1347 10

„Also haben wir einfach Buchstaben als Ziffern hinzugefügt? O_o“

„Ja. Und was ist die große Sache? Warum neue Zahlen erfinden, wenn Buchstaben perfekt funktionieren? Schauen Sie es sich an:“

Hexadezimale Ziffer Dezimalwert
0 0
1 1
8 8
9 9
A 10
B 11
C 12
D 13
E 14
F 15

„Ich werde auch nicht über die Konvertierung von Dezimal in Hexadezimal sprechen. Aber hier ist eine interessante Tatsache: Eine Hexadezimalziffer wird durch genau 4 Bits mit Werten von 0 bis 15 dargestellt. Ein Byte kann also mit acht Binärziffern geschrieben werden.“ (0 oder 1) oder zwei hexadezimale Ziffern.“

„Hier ist ein Beispiel:“

Dezimalzahl Binäre Zahl Hexadezimale Zahl
0 0000 0000 00
1 0000 0001 01
15 0000 1111 0f
16 0001 0000 10
31 0001 1111 1f
32 0010 0000 20
128 1000 0000 80
129 1000 0001 81
255 1111 1111 ff

„Die hexadezimale Darstellung lässt sich leicht in eine binäre Darstellung umwandeln (und umgekehrt). Deshalb wird die interne Byte-Darstellung einer Zahl in der Programmierung selten binär (mit 0 und 1) angegeben. Das wäre zu lang und schwer zu verstehen. Hexadezimale Notation ist viel lesbarer und kompakter.“

„Ich stimme zu. Sogar mir hat es gefallen.“

„Mit Java können Sie übrigens Zahlen in verschiedenen Zahlensystemen direkt in den Code schreiben:“

Base Unterscheidungsmerkmal Beispiele Ungültige Zahlen
2 0b  am Anfang der Nummer 0b 00001111 0b 11111 2 1
8 0  am Anfang der Zahl 0 1234343 0 12 8
10 Keiner 95459 909 a
16 0x  am Anfang der Zahl 0x 10ff 0x 1c gh

„Ausgezeichnete Lektion. Danke, Bilaabo.“