Ich verstehe bisher, dass alle Informationen in binärer Form (0 und 1) auf Festplattenlaufwerken und in Blöcken von 8 Bits auf modernen Computerfestplatten gespeichert wurden. Dieses Hexadezimalwert wird verwendet, um die Anzeige von Informationen zu erleichtern, sodass der Mensch keine langen Bitblöcke durchlesen muss.
Das ist zu 100% korrekt. Hexadezimal ist nur eine Darstellung von Daten; Die Natur von Hexadezimalwerten ist im Vergleich zu anderen Formaten nichts Besonderes. Es ermöglicht keine Datenkomprimierung oder ähnliches.
Ich denke, worauf sich Ihr Freund bezogen hat, ist der Unterschied zwischen der Darstellung von Zahlen als Zeichenketten und der Darstellung von Zahlen als Zahlen .
Für vorzeichenlose Ganzzahlen - dies ist eine Darstellung von Zahlen in Bits (Nullen und Einsen) von 0 bis zu einer bestimmten, festen Höchstzahl -, kann die maximale Anzahl, die durch N Bits dargestellt werden kann, 2 ^ N, minus 1, vorausgesetzt, Sie Beginne mit 0.
Wenn Sie also 8 Bit (1 Byte) haben, können Sie jede Zahl von 0 bis 255 darstellen, ohne Informationen zu verlieren. Sie können diese acht Bits zwischen 0 und 1 bearbeiten, um jede Zahl von 0 bis einschließlich 255 eindeutig darzustellen. Oder von 1 bis 256, wenn Sie möchten. Es spielt keine Rolle Computer neigen dazu, sie ab 0 zu repräsentieren.
Wenn Sie 16 Bits (2 Bytes) haben, können Sie jede Zahl von 0 bis 65535 (das sind 2 ^ 16 - 1) darstellen. 32 Bit, jede Zahl von 0 bis 4294967295. 64 Bit, jede Zahl von 0 bis eine Zahl von 1,8 mit neunzehn Nullen .
Aus der Algebra wissen Sie vielleicht, dass 2 ^ N eine Exponentialfunktion ist. Das bedeutet, dass, obwohl 64 Bits nur achtmal mehr Bits als 8 Bits sind, es viel mehr Daten in den achtfachen Bits speichern kann als die Anzahl 255*8
(die nur 2040 ist!). 2040 ist eine sehr kleine Zahl im Vergleich zu ungefähr 180000000000000000000. Und 64 Bits können JEDE Zahl von 0 bis zu diesem Maximum speichern.
Eine interessante Implikation für auf diese Weise gespeicherte Ganzzahlen ist, dass der Programmierer im Voraus entscheiden muss, wie groß der Speicher sein muss, was wiederum die maximale Anzahl bestimmt, die durch eine bestimmte Ganzzahl dargestellt werden kann. Wenn Sie versuchen, eine Nummer zu speichern, die größer ist, als der Speicher verarbeiten kann, wird ein so genannter Überlauf angezeigt . Dies ist beispielsweise der Fall, wenn Sie eine 8-Bit-Ganzzahl haben, die auf 255 eingestellt ist, und Sie den Computer auffordern, eine 1 hinzuzufügen. Nun, Sie können nicht 256 innerhalb einer ganzen Zahl darstellen, deren Bereich zwischen 0 und 255 liegt! Was normalerweise passiert, ist, dass es wieder an den Anfang zurückkehrt und auf 0 zurückgeht.
Es gibt Programme, die Mathematik in einem Modus ausführen, der als "willkürliche Genauigkeit" bezeichnet wird und die Größe des Speichers automatisch ändert, um immer größer zu werden. Wenn Sie beispielsweise 255 mit 100000 multiplizieren, müsste die Antwort über 8 Bit und über 16 Bit hinaus wachsen, würde aber in eine 32-Bit-Ganzzahl passen. Wenn Sie eine Zahl eingeben oder eine mathematische Operation ausführen, bei der eine Zahl größer als der Maximalwert für eine 64-Bit-Ganzzahl ist, muss sie noch mehr Speicherplatz zuweisen.
HOWEVER - wenn Sie Zahlen als Zeichenkette darstellen, nimmt jede Zahl so viel Platz wie ein Buchstabe in der Prosa. "ASDF" und "1234" nehmen genau den gleichen Platz ein. "OneTwoThreeFourFive" (19 Zeichen) nimmt den gleichen Platz wie "1234567890123456789" ein. Der erforderliche Speicherplatz wächst linear mit der Anzahl der Zahlen (oder Buchstaben oder Zeichen, die generisch vorhanden sind). Das liegt daran, dass jedes Zeichen eine Vielzahl von Zeichen innerhalb des Zeichensatzes darstellen kann und Zahlen nur Zeichen in einem Zeichensatz sind. Eine bestimmte Folge von Nullen und Einsen erzeugt die Zahl "3", eine andere Folge erzeugt "4".
Typischerweise werden Zeichen gespeichert, die entweder 8 oder 16 Bit aufnehmen, aber einige Zeichencodierungen nehmen je nach Zeichen entweder eine variable Anzahl von Bits (wie UTF-8) oder immer eine größere Anzahl von Bits (wie UCS-32) in Anspruch. .
Wenn jedes Zeichen 8 Bits benötigt, beanspruchen "OneTwoThreeFourFive" und "1234567890123456789" jeweils 152 Bits. "1234567890123456789" kann jedoch in eine 64-Bit-Ganzzahl ohne Vorzeichen passen, die ... nur 64 Bit verbraucht . Das spart 88 Bit! Und wir haben nicht einmal "Datenkomprimierung" -Tricks wie Zip, 7-Zip, RAR usw. verwendet.