Wofür werden Oktalzahlen (Basis 8) verwendet?

11

Java bietet Möglichkeiten zum Schreiben numerischer Literale in den Basen 2, 8, 10 und 16.

Ich frage mich, warum Basis 8 enthalten ist, z int x = 0123;.

Ich denke, dass es etwas Ähnliches wie die Tatsache geben könnte, dass die Kapazität eines Bytes hexadezimal FF + 1 ist und so weiter.

jokinjo
quelle
7
Ich glaube, Ihre Frage lautet: "Wofür werden Oktalzahlen verwendet?"
GetMeARemoteJob
Ja, so hätte ich die Frage formulieren sollen. Vielen Dank für all die interessanten Antworten. Ich dachte, dass es eine historische Grundlage haben könnte, aber ich hatte nicht die Erfahrung, um meinen Finger darauf zu legen.
Jokinjo

Antworten:

16

Diese Antwort wurde für die ursprüngliche Frage geschrieben: "Warum ist das Schreiben einer Zahl in Basis 8 nützlich?"

Es war, die Sprache denen bekannt zu machen, die C usw. kannten. Dann ist die Frage, warum man sie in diesen unterstützt!

Es gab Architekturen (verschiedene PDPs), die 18 Bit breite Wörter verwendeten (und andere verwendeten 36 Bit Wörter), so dass Literale mit einer 3 Bit breiten Ziffer nützlich wären.

Praktisch nur, vergebe ich habe es in Java - Code verwendet gesehen ist für UNIX-Berechtigungen Angabe, zB 0777, 0644usw.

(Die ironische Antwort darauf, warum es unterstützt wird, lautet "Upvotes zu dieser Frage ").

Andy Turner
quelle
Oh, guter Punkt, ich habe die Dateiberechtigungen unter Linux vergessen! Minimale Verwendung der verfügbaren Bits ... Oktal passt zur Rechnung.
Sarlacii
1
@sarlacii "minimale Verwendung" hat nichts damit zu tun, die "Oktal" -Eigenschaft eines int-Literal existiert nur im Quellcode. Es ist einfach einfacher, die durch ein Oktalliteral gekennzeichneten Berechtigungen zu erfassen, da die Ziffern direkt dem Benutzer, der Gruppe und anderen entsprechen.
Andy Turner
Ich habe meine erste Programmierung auf einem Großrechner mit 60-Bit-Wörtern und 6-Bit-Zeichensatz durchgeführt. Die Adressen waren 18 Bit. Natürlich haben wir Oktal verwendet. Als ich Hexadezimal kennenlernte, war es ziemlich eigenartig, Buchstaben in einer Zahl zu sehen.
Ole VV
@Andy Ich halte es immer noch für eine minimale Verwendung ... Die Wahl der Bitlänge hängt nicht nur vom Code ab. Es ist auch durch die Ressource begrenzt. z.B. Ich könnte wählen, 8 Bits zu verwenden, um jede Berechtigung zu codieren, die nicht verwendeten Bits auszublenden, 3 Bytes zu benötigen, oder vielmehr das Minimum von 3 Bits zu verwenden und dann Oktalzahlen zu codieren, um nur 1 ½ Bytes zu verwenden (unter Verwendung der 4 .. etwas klebrig). Aber ja, es ist willkürlich, wenn Sie auf Bitebene gehen ... da Sie den kombinierten Oktalwert sowieso als Hex lesen können.
Sarlacii
7

"Die Oktalzahlen sind nicht mehr so ​​häufig wie früher. Octal wird jedoch verwendet, wenn die Anzahl der Bits in einem Wort ein Vielfaches von 3 ist. Es wird auch als Abkürzung für die Darstellung von Dateiberechtigungen auf UNIX-Systemen und die Darstellung von verwendet UTF8-Nummern usw. "

Von: https://www.tutorialspoint.com/octal-number-system

dein
quelle
3
Nicht wirklich "Anzahl der Bits in einem Wort" - wie es auf 16-Bit-Minicomputern in Form eines hohen Bits 0/1 und dann einer 5-Oktal-Zahl verwendet wurde. Eine bessere Beschreibung könnte sein: Wird verwendet, wenn die Größe eines Feldes in einem Wort ein Vielfaches von 8 Bits ist. Dieselben Computer hatten (häufig) 8 Register - ein in einem Befehl angegebenes Register hätte also ein 3-Bit-Feld, um ein Register zu benennen, ein Register-zu-Register-Befehl hätte zwei solche 3-Bit-Felder; Dieselben Computer hatten häufig einen 3-Bit-Opcode oder einen 3-Bit-Opcode mit einem "Escape" (z. B. 0111) zu einem 6-Bit- Opcode. usw. usw.
Davidbak
4

Geschichte des Computers (Wissenschaft). Um eine Gruppe von Bits darzustellen, passt eine Basis 10 nicht, Basis 8 = 2 3 für 3 Bits und Basis 16 = 2 4 für 4 Bits passen besser.

Der Vorteil von Basis 8 ist, dass alle Ziffern wirklich Ziffern sind: 0-7, während Basis 16 "Ziffern" 0-9A-F hat.

Für 8 Bits einer Byte-Basis ist 16 (hexadezimal) besser geeignet und gewonnen. Bei Unix-Basis 8-Oktal wird häufig noch für rwxBits (Lesen, Schreiben, Ausführen) für Benutzer, Gruppen und andere verwendet. daher Oktalzahlen wie 0666 oder 0777.

Hexadezimal ist allgegenwärtig, nicht zuletzt, weil die Wortgröße der Computer heutzutage mehrere Bytes beträgt. Dass das 8-Bit bytezum Standard wurde, ist eine andere, schwierige Geschichte (2 3 Bit und Adressierung).

Joop Eggen
quelle
0

Ursprüngliche Antwort für "Wofür werden Oktalzahlen (Basis 8) verwendet?"

Allgemeine Verwendung von Octal

  • Als Abkürzung für Binär: Für Rechenmaschinen (wie UNIVAC 1050, PDP-8, ICL 1900 usw.) wurde Octal als Abkürzung für Binär verwendet, da ihre Wortgröße durch drei teilbar ist (jede Oktalziffer steht für drei Binärzahlen) Ziffern). Zwei, vier, acht oder zwölf Ziffern könnten also ein ganzes Maschinenwort präzise anzeigen. Außerdem konnten die Kosten gesenkt werden, indem Nixie-Röhren, Sieben-Segment-Anzeigen und Taschenrechner für die Bedienerkonsolen verwendet wurden, bei denen die Verwendung von Binäranzeigen zu komplex war, Dezimalanzeigen komplexe Hardware zum Konvertieren von Radices und hexadezimale Anzeigen zum Anzeigen von mehr Ziffern benötigten .

  • 16-, 32- oder 62-Bit-Wortdarstellung:Alle modernen Computerplattformen verwenden 16-, 32- oder 64-Bit-Wörter, die weiter in 8-Bit-Bytes unterteilt sind. Auf solchen Systemen wären drei Oktalstellen pro Byte erforderlich, wobei die höchstwertige Oktalstelle zwei Binärziffern darstellt (plus ein Bit des nächsten signifikanten Bytes, falls vorhanden). Die oktale Darstellung eines 16-Bit-Wortes erfordert 6 Ziffern, aber die höchstwertige oktale Ziffer repräsentiert (ziemlich unelegant) nur ein Bit (0 oder 1). Diese Darstellung bietet keine Möglichkeit, das höchstwertige Byte leicht zu lesen, da es über vier Oktalstellen verschmiert ist. Daher wird Hexadezimal heutzutage in Programmiersprachen häufiger verwendet, da zwei hexadezimale Ziffern genau ein Byte angeben. Einige Plattformen mit einer Wortgröße von zwei Potenzen verfügen immer noch über Befehlsunterwörter, die leichter zu verstehen sind, wenn sie in Oktalform angezeigt werden. Dies umfasst die PDP-11- und Motorola 68000-Familie. Die heutige allgegenwärtige x86-Architektur gehört ebenfalls zu dieser Kategorie, aber Oktal wird auf dieser Plattform selten verwendet.

  • Codierungsbeschreibungen: Bestimmte Eigenschaften der binären Codierung von Opcodes in der modernen x86-Architektur werden leichter sichtbar, wenn sie in Oktal angezeigt werden, z. B. das ModRM-Byte, das in Felder mit 2, 3 und 3 Bit unterteilt ist, sodass Oktal bei der Beschreibung hilfreich sein kann diese Kodierungen.

  • Berechnungen und Dateizugriffsberechtigungen: Octal wird manchmal beim Rechnen anstelle von Hexadezimal verwendet, möglicherweise am häufigsten in der heutigen Zeit in Verbindung mit Dateiberechtigungen unter Unix-Systemen (Beim Berechtigungszugriff auf chmod). Es hat den Vorteil, dass keine zusätzlichen Symbole als Ziffern erforderlich sind (das Hexadezimalsystem ist Basis-16 und benötigt daher sechs zusätzliche Symbole über 0–9 hinaus).

  • Digitale Anzeigen: Oktalzahlen werden auch zum Anzeigen digitaler Inhalte auf einem Bildschirm verwendet, da weniger Symbole für die Darstellung verwendet werden.

  • Grafische Darstellung von Byte-Strings: Einige Programmiersprachen (C, Perl, Postscript usw.) haben eine Darstellung von Texten / Grafiken in Octal mit dem Escapezeichen \ nnn. Die Oktaldarstellung ist besonders praktisch bei Nicht-ASCII-Bytes von UTF-8, die Gruppen von 6 Bits codieren und bei denen jedes Startbyte den Oktalwert \ 3nn und jedes Fortsetzungsbyte den Oktalwert \ 2nn hat.

  • Frühe Gleitkomma-Arithmetik: Octal wurde auch für Gleitkomma in den Computern Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) und Burroughs B7700 (1972) verwendet.

  • In Transpondern: Flugzeuge senden einen Code, der als vieroktalstellige Zahl ausgedrückt wird, wenn er vom Bodenradar abgefragt wird. Dieser Code wird verwendet, um verschiedene Flugzeuge auf dem Radarschirm zu unterscheiden.

Weitere Lesungen: https://en.wikipedia.org/wiki/Octal

Jishan Shaikh
quelle
1
Ich habe es genossen, den Wikipedia-Eintrag zu lesen, insbesondere das Zählen der Leerzeichen zwischen den Fingern. Zum größten Teil könnte man jedoch sagen, dass der Artikel der Anstoß für meine Frage ist. Wie ich vermutet habe, macht die Unteilbarkeit der in der aktuellen Computerarchitektur verwendeten Wortgrößen die oktale Darstellung nicht nützlich, und einer der Absätze, die Sie als "16-, 32-, 64-Bit-Wörter ..." zitieren, ist überhaupt nicht klar. Könnten Sie bitte erklären, wie "das höchstwertige Byte über vier Oktalstellen verschmiert wird" und "Einige Plattformen mit einer Zweierpotenz-Wortgröße haben noch
Unterwörter für