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

4voto

Dale Amon Punkte 51

Es gibt keinen Grund, einen Standard zu ändern, der auf die Geburtsstunde der Sprache zurückgeht und der in unzähligen Programmen vorhanden ist. Ich erinnere mich noch an ASCII-Zeichen anhand ihrer Oktalwerte, müsste nachdenken, um auf den Hex-Wert von A zu kommen, aber es ist 101 in oktal; numerisch 0 ist 060... ^C ist 003...

Das heißt, ich verwende oft die oktale Darstellung.

Wenn Sie nun Ihre Mine wirklich verbiegen wollen, schauen Sie sich das Wortformat für die PDP-10 an...

3voto

PrgTrdr Punkte 182

Jeder, der das Programmieren auf einer PDP-8 gelernt hat, hat ein warmes Herz für Oktalzahlen. Die Wortgröße betrug 12 Bits, aufgeteilt in 4 Gruppen zu je 3 Bits, -1 war also 7777 oktal. Dieses Schema wurde in der PDP-11 beibehalten, die 16-Bit-Wörter hatte, aber immer noch die Oktaldarstellung für verschiedene Dinge verwendete, daher das *NIX-Dateiberechtigungsschema, das bis zum heutigen Tag existiert.

1voto

JAMES Punkte 11

Oktal ist und war am nützlichsten bei der ersten verfügbaren Anzeigehardware (7-Segment-Anzeigen). Diese ursprünglichen Anzeigen verfügten nicht über die später verfügbaren Decoder.

So wurden die digitalen Registerausgänge so gruppiert, dass sie auf das verfügbare Display passten, das nur acht (8) Symbole anzeigen konnte: 0,1,2 3,4,5,6,7 .

Auch die ersten Röhrenbildschirme waren Rasterbildschirme, und die einfachsten Zeichen-Symbol-Generatoren entsprachen den 7-Segment-Anzeigen.

Die Motivation war, wie immer, eine möglichst kostengünstige Anzeige.

0 Stimmen

Um das klarzustellen: Sicherlich können Sie Hex-Ziffern auf einer 7-Segment-Anzeige darstellen; wollen Sie damit sagen, dass es darum ging, die Komplexität der Encoder für diese Anzeigen gering zu halten? War das Hinzufügen von mehr Ziffern wirklich weniger teuer als das Hinzufügen von mehr Logik?

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