Warum oktal und hexadezimal? Computer verwenden binäre und menschliche Dezimalzahlen

15

Warum verwenden wir andere Basen, die weder binär (für Computer) noch dezimal (für Menschen) sind?

Computer stellen sie letztendlich in Binärform dar, und Menschen ziehen es nachdrücklich vor, ihre Dezimaldarstellung zu erhalten. Warum nicht an diesen beiden Basen festhalten?

Quora Feans
quelle
Ich neige dazu zu glauben, dass es keinen stichhaltigen Grund gibt, Hex oder etwas anderes mit einer hohen Anzahl von Glyphen für Zahlen zu verwenden. Darüber hinaus neige ich zu der Annahme, dass binäre Wiederholungen in Zukunft andere Notationen für allgemeine Fälle ersetzen können.
Mikhail V
@MikhailV Eine hexadezimale Darstellung ist VIEL prägnanter als eine binäre Darstellung. Ich würde sagen, das ist ein ziemlich solider Grund, eine größere Anzahl von Glyphen zu verwenden als beispielsweise 2.
Ben Jones,

Antworten:

18

Oktal- (Basis-8) und Hexadezimalzahlen (Basis-16) sind ein vernünftiger Kompromiss zwischen dem von Computern verwendeten Binärsystem (Basis-2) und dem von den meisten Menschen verwendeten Dezimalsystem (Basis-10).

Computer können nicht mit mehreren Symbolen umgehen, daher ist Basis 2 (wo Sie nur 2 Symbole haben) für sie geeignet, während längere Zeichenfolgen, Zahlen mit mehr Ziffern, weniger problematisch sind. Menschen sind sehr gut mit mehreren Symbolen, können sich aber nicht so gut an längere Zeichenketten erinnern.

Oktal und Hex nutzen den menschlichen Vorteil, dass sie mit vielen Symbolen arbeiten können, während das Hin- und Herwandeln zwischen Binärzeichen noch einfach ist, da jede Hexadezimalziffer 4 Binärziffern ( ) und jede Oktalziffer 3 ( 8 =) darstellt 2 3 ). Ich denke, Hex gewinnt über Oktal, weil es leicht verwendet werden kann, um Bytes und 16/32/64-Bit-Zahlen darzustellen.16=248=23

dtech
quelle
7
Betrachten Sie als Beispiel die Hex-Werte von RGB. Es ist leicht zu merken, dass Weiß #FFFFFF ist. Es ist schwerer zu merken, dass Weiß eine Dezimalzahl von 16777215 hat. Sie möchten die rote Komponente von # EF439A entfernen? Sie erhalten # 00439A, dh Sie ändern nur die ersten beiden Stellen auf 0. Bei Dezimalstellen müssen Sie 15663104 subtrahieren. Viel Glück, wenn Sie sich daran erinnern.
Jmite
3
Um genau zu sein, würden Farben in Dezimalschreibweise Dreifache verwenden, und Weiß wäre (255, 255, 255). Wir verketten die hexadezimalen Werte, nur weil sie immer 2-stellig sind. Wir könnten dasselbe mit Dezimalstellen machen, die Nullen verwenden, dann wäre Weiß 255255255 anstelle von 16777215.
Spidey,
@Spidey Genau. Außerdem kann mein Gehirn so etwas wie (127,255,255) viel einfacher analysieren und ich kann sogar raten, wie die Farbe aussehen wird, da ich den Anteil der Tintenmenge sehen kann und ihn nicht in hex in meinem Kopf berechnen muss.
Mikhail V
13

Wir verwenden sie für die Bequemlichkeit und Kürze.

Hex und Oct sind wirklich hervorragende komprimierte Darstellungen von Binärdateien. Insbesondere Hex eignet sich gut für komprimierte Formen von Speicheradressen. Jede Oktanzahl entspricht direkt 3 Binärbits und jede Hexanzahl 4 Binärbits. Dies ist ein Ergebnis der Basen (8 und 16), die Potenzen von 2 ( und 2 4 ) sind. Zum Beispiel kann ich binär 01101001 als hex 69 schreiben oder wenn ich es mit einer führenden Null als Okt 151 verlängere .23240110100169151

Angenommen, Sie benötigen 64-Bit-Speicheradressen. Sie können entweder alle 64 Binärbits anzeigen oder sie auf 16 Hexadezimalstellen verdichten. Oft müssen Sie nicht einige Adressen vergleichen, um festzustellen, ob sie gleich oder zusammenhängend sind. Möchten Sie lieber 64 Bit oder 16 Ziffern betrachten?

Logan Mayfield
quelle
5
Octal hat den Vorteil, dass es keine Ziffernsymbole hinzufügt, und war möglicherweise in Zeiten von 6-Bit-Zeichen (und gewöhnlichen Nicht-Zweierpotenzen-Wörtern, z. B. 12-Bit-PDP-8, 18-Bit-PDP-8) praktischer. 1 [Adressregister für CDC 6x00], 36-Bit-PDP-6, 60-Bit-Operandenregister für CDC 6x00). Der Wechsel zu Oktettzeichen / Bytes und Zweierpotenzen macht hexadezimal attraktiver.
Paul A. Clayton
"Möchten Sie lieber 64 Bit oder 16 Ziffern betrachten?" Sicher würde ich gruppierte Bits betrachten. Aber natürlich nicht in "01" -Notation, was hässlich ist und meine Augen verletzt. Und ich sage nicht einmal, wie sehr Hex meine Augen verletzt.
Mikhail V
@MikhailV: Was meinst du mit "01" -Notation? Du sagst, du würdest lieber Bits betrachten, aber nicht in der "01" -Notation - welche Notation würdest du dann verwenden. Wenn Sie sagen, Hex tut Ihren Augen weh, kann ich nicht anders, als zu glauben, Sie hätten vielleicht ein bisschen mehr mit Dezimalstellen als mit Hex geübt. (Eigentlich dachte ich, es sei (Solo) Sex, von dem gesagt wird, dass er schlecht für deine Augen ist, aber das ist eine andere Geschichte.)
PJTraill
Ich bevorzuge dies der derzeit populäreren Antwort von dtech, weil es die Benutzerfreundlichkeit betont, aber Sie haben vielleicht darauf hingewiesen, dass nicht nur die kürzeren Darstellungen, sondern auch die größere Anzahl von Ziffern es einfacher machen, zu erkennen, wo Sie sich befinden, wenn Sie eine Zahl in hexadezimal oder hexadezimal lesen oktal.
PJTraill
@ PaulA.Clayton: gute Punkte; Ein weiterer Vorteil des PDP-11 bestand darin, dass die meisten Anweisungscodes, obwohl Wörter (natürliche Operationseinheiten) 16 Bit waren, auf natürliche Weise in eine 2-Bit-Operation und vier 3-Bit-Gruppen unterteilt wurden, die die Registernummer und den Adressmodus repräsentieren, die beide hatten 8 Möglichkeiten, von zwei Argumenten. Mein Favorit: 014747 = MOV - (PC), - (PC), das den Speicher mit sich selbst füllt (falls erlaubt).
PJTraill
5

Binärzahlen im Text sind Platzverschwendung.

252n-1

Karolis Juodelė
quelle
2

Einführung

Wie bereits in anderen Antworten erwähnt, kann es unterschiedliche Notationen für unterschiedliche Zwecke und Einschränkungen geben. Notationen sind eigentlich eine Kodierung als Folge von Zeichen, und wir wissen aus dem Studium von Algorithmen und Datenstrukturen, dass es viele Möglichkeiten gibt, abstrakte Konzepte, eine Liste oder eine Menge zu kodieren, je nachdem, was wir damit machen möchten . In diesem Fall handelt es sich hauptsächlich um algorithmische Bequemlichkeit.

Gleiches gilt für die Darstellung von Zahlen. Im Computer ist auf der untersten Ebene alles binär, obwohl für einige Anwendungen auch fremde Darstellungen verwendet werden können.

Außerhalb des Computers verwenden wir jede Art von menschlich verständlicher Darstellung, abhängig von der menschlichen Zweckmäßigkeit hinsichtlich der Art des dargestellten Wertes. Die binäre Darstellung ist oft zu lang und unstrukturiert, um leicht gelesen und geschrieben werden zu können, sodass sie hexadezimal oder oktal ist.Die Wahl hängt oft damit zusammen, wie Informationen in einem binären Wort strukturiert sind, das nicht unbedingt eine Zahl darstellen soll.

Aber wenn nur Zahlen unter Berücksichtigung , dh Darstellung von Zahlen, ist es wert , in anderer Zahlendarstellung Systemen suchen zu verstehen , dass , wichtige Faktoren sind: Physiologie, Gewohnheit und Bequemlichkeit. Convenience ist natürlich der Hauptfaktor für die Schaffung von Vielfalt, da dies vom Nutzungskontext abhängt.

Ein breiterer Blick

Es ist überraschend, dass alle Antworten bisher nur Dezimalzahlen und Basiszahlen berücksichtigen 2n Systeme, meistens binär, oktal und hitzedezimal.

Der Kern der Frage scheint in keiner Weise auf Computer beschränkt zu sein, und die Menschen haben und benutzen noch mehrere andere Zahlensysteme. Einige von ihnen werden sogar in Computern verwendet, zum Beispiel beim Umgang mit langen ganzen Zahlen (ganz zu schweigen von nicht ganzzahligen Zahlen ).

Eine erste Bemerkung ist, dass, wenn Menschen in Tausenden oder Millionen als Einheit zählen, dies immer noch als Dezimalzahl betrachtet wird, da dies Potenzen von 10 sind. Man könnte sich also fragen, warum Oktal oder Hexadezimalzahl nicht nur als Variation der Binärzahl betrachtet werden sollten. Ein möglicher Grund kann die Anzahl der Symbole sein, die zur Darstellung von Zahlen verwendet werden (obwohl dies ein umstrittenes Problem ist, wie wir bei anderen Systemen sehen werden).

In Bezug auf Menschen verwenden sie dann mehrere Systeme in der Basis 5, sogenannte Quinary-Systeme . Tatsächlich bestehen die meisten dieser Systeme aus zwei Basen, wobei die zweite 2 oder 4 ist und sich mit der fünften Basis abwechselt, wodurch sie der Basis 10 (dezimal) oder der Basis 20 (vigesimal) entsprechen. Ratet mal, woher das kommt :)

Diese Doppelbasensysteme werden als Biquinär- oder Quadriquinärsysteme bezeichnet. Reines Quinary wird selten verwendet.

Die römische Zahl kann als binäres System angesehen werden (ein Hinweis darauf, wie man mit ihnen rechnet). Chinesischer und japanischer Abakus verwenden bi-quinary. Quadri-Quinary wurde von den Mayas genutzt.

Der Grund für die Verwendung eines Systems sind wahrscheinlich viele. Ein guter Grund dafür ist, dass es das erste lokale Design war und die Menschen jetzt daran gewöhnt sind. Man könnte sich zum Beispiel auch fragen, warum Englisch sprechende Menschen beim Messen von Entfernungen immer noch ein äußerst seltsames Zählsystem verwenden. Man könnte argumentieren, dass es sich um mehrere Einheiten handelt, nicht um eine Nummerierung, aber das ist eine sehr schwache Bemerkung. Zahlen werden hauptsächlich zum Messen von Dingen verwendet.

Weitere Gründe für die Beibehaltung eines Systems sind die Bequemlichkeit in einem bestimmten Kontext. Möglicherweise besteht ein Kompromiss zwischen der Anzahl der verschiedenen Symbole oder Positionen auf einem Abakus und der Anzahl der Symbolhäufigkeiten, die erforderlich sind, um ausreichend große Zahlen zu bilden. Basis 2 arbeitet mit zwei unterschiedlichen Symbolen, weist jedoch viele Vorkommen auf, was für eine materielle Darstellung unpraktisch sein kann. Die Vigesimalbasis 20 würde zwanzig Symbole und sehr große Multiplikationstabellen erfordern, an die sich die Leute nicht erinnern würden. Ein bi-quinäres oder quadri-quinäres System ist jedoch viel einfacher zu handhaben, insbesondere um einen Abakus zu bauen. Reines Quinärsystem wäre wahrscheinlich noch besser, aber es widerspricht physiologischen Gewohnheiten und Intuition. Und es ist immer schön, mit den Fingern zählen zu können, wenn wir es nicht besser wissen.

Das ist aber noch nicht alles.

Ein sehr altes und weit verbreitetes System ist das Sexagesimalsystem, mit dem Zeit und Winkel gemessen werden (aber wir wissen, dass sie durch Erdrotation zusammenhängen). Es wird die Basis 60 verwendet, aber es werden keine 60 Symbole verwendet, da dies viel zu viele sind. Daher ist es auf ein anderes System angewiesen, um seine Synbole darzustellen (z. B. das Dezimalsystem).

Der Kreis kann in 6 Teile geteilt werden, die einem Winkel von 60 Grad entsprechen. Diese Teile lassen sich am einfachsten mit gleichseitigen Dreiecken bilden. Dann beträgt jeder Grad 60 Bogenminuten, die jeweils in 60 Sekunden unterteilt sind.

Laut Wikipedia

Es entstand mit den alten Sumerern im 3. Jahrtausend v. Chr., Wurde an die alten Babylonier weitergegeben und wird immer noch - in modifizierter Form - zum Messen von Zeit, Winkeln und geografischen Koordinaten verwendet.

In Anbetracht des Ursprungs war es ein recht praktisches System, zu einer Zeit, als die Mathematik kaum in den Kinderschuhen steckte. Der 60⁰-Winkel ist nicht nur einfach zu zeichnen, 60 hat auch viele Faktoren, so dass es möglich ist, auf viele Arten und ohne Rest mit ganzen Zahlen zu teilen.

Physiologisch kann es mit einem duodezimal-quinären System, Basis 12 und 5, verwandt werden. Basis 12 ist praktisch, da es beim Zählen auf Fingerknochen von 4 Fingern mit dem Daumen derselben Hand verwendet werden kann. Dann geben die Finger der anderen Hand die Quinärkomponente. Und12×5=60.

Es gibt aber auch andere Möglichkeiten, um 60 zu werden, wie das vigesimal-ternäre System der Babylonier .

Warum benutzen wir immer noch das Sexagesimalsystem? Ich denke, wir sind nur daran gewöhnt, und wir haben möglicherweise zu viele widersprüchliche Probleme, als dass eine Änderung vollständig gerechtfertigt wäre.

Es ist interessant festzustellen, dass zwischen Nummerierungssystemen und Einheitensystemen ein starkes Zusammenspiel besteht. Dies ist jedoch zu erwarten, da die Messung für Zahlen eine wichtige Rolle spielt. Dies macht sich im Gegensatz zwischen der Dezimal- und der Binärmetrik für die Speichergröße bemerkbar .

babou
quelle
3
Das könnte daran liegen, dass der Titel "Warum hex, oktal oder hexadezimal?"
Fizz
1
@RespawnedFluff Gute Bemerkung. Dann kann sich meine Befragung auf die Frage erstrecken. Ich wollte nicht sagen, dass andere Antworten uninteressant sind. Eine breitere Sicht zeigt jedoch besser die möglichen Motivationen für eine Vielzahl von Systemen. Es unterstützt einige der bereits gegebenen Antworten. Grundsätzlich sind Motivationen Gewohnheit und Bequemlichkeit. Convenience ist jedoch sehr kontextabhängig. Die Dichotomie der Speichergröße wurde kürzlich erstellt und veranschaulicht den Punkt.
Babou
2
Kürze ist eine Tugend, für diese Frage ist weder eine 1000-Wörter-Prosa erforderlich, noch ist das meiste davon sehr relevant. Sie haben die Frage auch nicht beantwortet.
Dtech
"Wenn die Leute in Tausenden zählen, ... wird dies immer noch als Dezimalzahl betrachtet, da dies Potenzen von 10 sind. Man könnte sich also fragen, warum Oktal oder Hexadezimalzahl nicht nur als Variation der Binärzahl betrachtet werden sollten." Ziffern, normalerweise Nullen. Dies unterscheidet sich von base-1000, bei dem 1000 verschiedene Symbole für jede Zahl 0-999 verwendet werden.
Dtech
1
@dtech Danke. Ich hatte die Einleitung oder Zusammenfassung, die ich normalerweise vor meinen Antworten habe, vergessen. Und dies führte mich zu einem wichtigen Punkt, der von anderen Antworten anscheinend ignoriert wurde. Nicht jedes Binärwort ist als Ziffer gedacht. Der Versuch, eine umfassendere Ansicht zu erhalten, hilft beim Auffinden von Problemen.
Babou