51 Stimmen

Oktalzahl-Literale: Wann? Warum? Immer?

Ich habe noch nie Oktalzahlen in meinem Code verwendet und bin auch noch nie auf einen Code gestoßen, der sie verwendet hat (trotz Hexadezimalzahlen und Bitverdreher).

Ich habe etwa 1994 mit der Programmierung in C/C++ begonnen, vielleicht bin ich also zu jung für diese Aufgabe? Verwendet älterer Code Oktalzahlen? C unterstützt diese durch das Voranstellen einer 0, aber wo ist der Code, der diese Basis-8-Zahlenliterale verwendet?

31 Stimmen

Ich verwende sie (in Form von oktalen Nullen) ständig: if (b < 0) b = 0;

2 Stimmen

@pmg: Ich frage mich, ob es schwierig wäre, 0q1234 als das "richtige" Format für Oktal-Konstanten ungleich Null zu definieren und 01234 explizit mit der Empfehlung zu deprivatisieren, dass Compiler eine nicht-fatale Diagnose erzeugen? Eigentlich würde ich gerne ein allgemeines Bit-basiertes Format 0[[x[0-9A-Fa-f]+]|[q[0-7]+]|[w[0-3]+]|[v[0-1]+]]+ sehen, um eine Mischung aus 1-4-Bit-Feldern zu ermöglichen, da 3-Bit-Felder nicht immer ein Vielfaches von 3 Bits von rechts ausgerichtet sind.

0 Stimmen

Zufälligerweise erschien diese Frage heute auf der Titelseite von SO (jemand fügte eine Antwort hinzu), und Raymond Chen veröffentlichte heute zufällig auch einen Artikel über das oktale Chaos: Der Fluch der führenden Null

7voto

John Meagher Punkte 21478

Ich habe auch gesehen, dass in Flugzeugtranspondern oktal verwendet wird. Ein Mode-3a-Transpondercode ist eine 12-Bit-Zahl, die jeder als 4 Oktalzahlen kennt. Es gibt ein paar mehr Informationen auf Wikipedia . Ich weiß, dass es im Allgemeinen nichts mit Computern zu tun hat, aber die FAA verwendet auch Computer :).

2 Stimmen

Ich glaube, das geschah zugunsten der jahrzehntealten Avionik, bei der man den Code auf vier Rändelrädern eingibt, die den 12-Bit-Wert direkt in einfache digitale Logik für die sequentielle Übertragung kodieren. Ein Mikroprozessor war nicht beteiligt, da es ihn nicht gab (oder man die Komplexität in der Avionik-Anwendung nicht wollte).

6voto

Greg Hewgill Punkte 882617

Es ist nützlich für die chmod y mkdir Funktionen im Unix-Land, aber abgesehen davon fallen mir keine anderen üblichen Verwendungen ein.

4voto

Ich kam in Kontakt mit Octal durch PDP-11 und anscheinend auch die Sprache C :)

2 Stimmen

Ah, PDP11; ich kann mich noch gut an die Kodierung erinnern: 010446 = MOV R4,-(SP) da 01xxxx = mov; 04=R4; 46 = -(SP).

4voto

nvuono Punkte 3263

Es gibt immer noch eine Reihe von alten Prozesssteuerungssystemen (Honeywell H4400, H45000 usw.) aus den späten 60er und 70er Jahren, die 24-Bit-Wörter mit oktaler Adressierung verwenden. Denken Sie zum Beispiel daran, wann die letzten Kernkraftwerke in den Vereinigten Staaten gebaut wurden.

Diese industriellen Systeme zu ersetzen, ist ein ziemlich großes Unterfangen. Vielleicht haben Sie ja das Glück, einen solchen Rechner in freier Wildbahn zu finden, bevor er ausstirbt, und Sie können seine großartigen benutzerdefinierten Fließkommaformate bestaunen!

4 Stimmen

Netter Gravatar... Da hast du mich erwischt.

4voto

Mandrake Punkte 353

Tar-Dateien speichern Informationen in Form einer oktalen Ganzzahlzeichenkette

0 Stimmen

Ist es ein Ganzzahl (nicht dezimal oder oktal) oder eine String ?

0 Stimmen

@vonbrand es sind oktale Saiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X