Ich habe nur meinen Kopf für ungefähr 20 Minuten gegen den Tisch geschlagen und einen total seltsamen Fehler in PHP gesehen, und dann habe ich gemerkt, dass es ein Oktal gibt. Das <% (* & #> Oktal.
Kurz gesagt, ich habe einige Literale mit Nullen aufgefüllt, damit der Code ausgerichtet wird, ich weiß, ein großer Fehler. Vergaß die Oktale.
Die Frage ist, verwendet jemand Oktale für etwas anderes als Dateiberechtigungen? (Ich persönlich bevorzuge, chmod ugo+rwx
aber ich verstehe, dass es nützlich ist, Oktale zu verwenden, wenn sie programmatisch generiert werden müssen.) Aber sind sie in einer anderen Situation nützlich?
0o
Präfix haben (was konsistent0x
und0b
vielleicht etwas schwer zu unterscheiden ist00
). Und seit Python 3 sind zusätzliche führende Nullen ein Syntaxfehler, um diese Art von Fehlern zu verhindern.Antworten:
Laut Wikipedia sind Oktale nicht mehr so häufig wie früher. Wie bereits erwähnt, verwendeten Systeme in der Vergangenheit ein 12/24/36-Bit-Wort, das eher in Oktalform als in Hexadezimalform dargestellt wird. Derzeit verwenden die x86- und i64-Architekturen jedoch ein 16/32/64-Bit Wort, das leichter hexadezimal und geradezu hässlich im Oktal dargestellt wird.
Gegenwärtige Verwendungen umfassen jedoch:
\3nn
und jedes Fortsetzungsbyte\2nn
)0
in einer Programmiersprache aufschreiben, die Oktale unterstützt, wie dieser Benutzer es geschrieben hat .Beachten Sie, dass moderne Programmiersprachen aufgrund fehlender Anwendungsfälle und der Möglichkeit von Fehlern manchmal keine Oktale mehr unterstützen. C # ist ein Beispiel, wie Eric Lippert dies in der 3. und 4. Ausgabe von TCPL schrieb :
Verwandte und nur als Referenz und Neugier - Code, The Hidden Sprache Computer - Hardware verfügt über eine hervorragende einfach zu folgen Erläuterungen zu Oktal und andere Zahlensysteme auf Seite 55 - 63 .
quelle
parseInt(011)==9
Octal wurde vor etwa 50 Jahren häufig von Digital Equipment Corp. (DEC) und anderen Unternehmen verwendet, die Computer mit einem 12-Bit-Wort (z. B. PDP-8) oder einem anderen Vielfachen von sechs verwendeten, wie z. B. 18 und 36 (z. B. UNIVAC 1108) ). In der Grundschule habe ich sowohl den PDP-8 als auch den UNIVAC 1108 verwendet. Zeichen in beiden Maschinen verwendeten normalerweise sechs Bits, nicht 8.
PDP-8-Befehlsformat - beachten Sie, dass die Bits mit 0 -> 11 nummeriert sind. Bit 0 war das MSB (höchstwertiges Bit).
Als DEC mit dem 16-Bit-PDP-11 herauskam, verwendeten sie weiterhin Oktal in ihrer Dokumentation anstelle von Hexadezimalzahlen, wie sie von den anderen Minicomputerherstellern verwendet wurden, die zu dieser Zeit 16-Bit-Computer herausbrachten. Dies lag wahrscheinlich an den mehreren 3-Bit-Feldern in den PDP-11-Befehlsformaten wie Register, Mode und Src / Dest, die sich als Oktalziffer dekodieren ließen. (Vielen Dank an John Strohm für diesen Hinweis.)
Als Motorola seinen 68000-Mikroprozessor herausbrachte, der stark vom PDP-11 beeinflusst wurde und die gleichen 3-Bit-Modus- und -Registerfelder in den Anweisungen aufwies, entschied man sich interessanterweise dafür, in der Dokumentation nur Hexadezimalzahlen zu verwenden.
Da der PDP-11 die Oktalnotation verwendete, wurden auch die ursprünglichen Berechtigungscodes für Unix, die zuerst auf dem PDP-11 erschienen, als Oktalnotation verwendet. Dieses Erbe bleibt unter Linux bestehen, wo der Befehl chmod weiterhin octal verwendet, um jedes der drei Bit-Felder 'rwx' anzugeben.
Weitere Kleinigkeiten - CompuServe, das in den 1980er und frühen 1990er Jahren ein weit verbreiteter Online-Einwahldienst war (bevor es von AOL in den Schatten gestellt wurde), lief zumindest ursprünglich auf DEC-Minicomputern. Alle Benutzer-IDs waren numerisch, und irgendwann stellte ich fest, dass sie niemals 8er oder 9er enthielten, also waren sie oktal. Meine alte GUS-ID war 70205.
quelle
Heathkit verwendete sie für das Frontpanel ihres H-8 und für Assembler-Listen ihrer Frontpanel-Software (genannt PAM-8). Dating mich, ich weiß.
Oktale sind heutzutage sehr selten; Jeder scheint Hex zu benutzen. Zahlen sehen jedoch immer noch wie oktale Zahlen aus, und Sie benötigen keine zusätzliche Tastenreihe für die Ziffern A bis F.
quelle
Einer der Gründe für die Verwendung von octal sees ist, dass es sich um die größte Basis mit einer Potenz von 2 handelt, für die Sie keine Sonderzeichen benötigen. Das heißt, alle Ziffern können numerisch sein. Basis 16 (die nächste von Basis 8) erfordert nicht numerische Ziffern (normalerweise A, B, C, D, E, F).
quelle
Ich benutze jeden Tag Oktal. Jedes Mal, wenn ich eine Datei ändern muss, verwende ich octal (ich datiere die Notation u + r vor ...). Jedes Mal, wenn ich ein Steuerzeichen in einen String einbetten möchte, verwende ich Oktal ... (Ja, ich könnte Hex verwenden, aber Oktal ist das, was ich verwende).
quelle
Jeder, der Kombinationen von Bits ausdrücken muss, die zu Dreien zusammengefasst sind.
Warum benutzt jemand Hex?
Dinge, die mir aus dem Kopf gehen und als Oktalzahlen ausgedrückt werden:
ncurses
Bibliothekquelle
7 * 6
oder07 * 06
? Wir verwenden Dezimalzahlen, um die Zahlen so darzustellen, wie wir sie am besten verarbeiten können, und Hexadezimalzahlen, um die Zahlen so darzustellen, wie sie auf dem Computer gespeichert sind. Und wir machen das oft. Diese Seite ist voll mit Beweisen dafür.Als ich an CDC-Mainframes arbeitete (mit einem 60-Bit-Wort, 12-Bit-Wort für die PPU), wurden alle Core-Dumps und dergleichen in Oktalform (20 Oktalziffern pro Wort, 4 pro PPU-Wort) ausgeführt.
quelle
Wie bei Hexadezimalzahlen wird auch bei der Angabe von Zeichencodes manchmal die Oktalnotation verwendet. Es kann aus dem gleichen Grund praktisch sein wie Hexadezimal: Es ist kompakter als Binär, aber sehr einfach in Binär in Ihrem Kopf zu übersetzen.
quelle
Oktalzahlen lassen sich wie Hex einfach aus Binärzahlen konvertieren. Gruppieren Sie einfach die Binärziffern in Dreiergruppen, beginnend rechts.
quelle
Nee. Ich habe sie nie benutzt. Nicht einmal zum Festlegen von Dateiberechtigungen, weil ich es so selten mache, dass ich es schwer zu lesen finde.
Also ja, es gibt den offensichtlichen Vorteil der Konvertierung von und nach binär.
Wie von @Mason bereits erwähnt, ist hex weitaus "natürlicher", da 2 hexadezimale Ziffern ein Byte ergeben. Es ist praktisch, 24/32 Bit RGB / ARGB-Farben, IP-Adressen, Byte-Masken usw. darzustellen. Octal auf der anderen Seite ist nicht wirklich praktisch, da Sie selten Szenarien haben, in denen Sie in 3-Bit-Gruppen arbeiten.
Dateiberechtigungen sind in der Tat das einzige, woran ich denken könnte. Und wenn es ab sofort kein Einsatzgebiet gibt, wird es wohl nie eines geben. Seitdem der Platz in den letzten 20 Jahren so billig geworden ist, ist es sehr ungewöhnlich geworden, Informationen auf Kosten der Ausrichtung, der Benutzerfreundlichkeit und der Erweiterbarkeit so eng zu packen.
quelle
Ein bisschen abseits, aber eine öffentliche Nutzung findet in der Londoner U-Bahn statt. Jeder Zug hat sowohl eine physische Identität als auch eine separate Identität in den Fahrplänen, die im Betrieb angezeigt wird - siehe hier: https://upload.wikimedia.org/wikipedia/commons/4/49/LUL-S-Stock-at -Watford.jpg (beachten Sie die 402 oben in der Zielanzeige ). Obwohl die Elektronik für die Displays standardmäßig dezimal arbeitet, werden die Ziffern 8 oder 9 nie angezeigt, da sie mit der älteren, auf Oktalen basierenden Hardware im Signalsystem verknüpft sind.
quelle