Кому нужно восьмеричное представление?

Насколько я понимаю, восьмеричные цифры в числовой карте соответствуют 3-битным сегментам и никогда не будут действительно представлять двоичную строку длиной 2^n.

Из любопытства, когда/почему/как это полезно? :-)

..Если основанием первичного представления слова в архитектуре является простое(!) степень числа 2, как минимум убедитесь, что оно четно ;-).


person user76568    schedule 11.03.2014    source источник
comment
Я думаю, что это больше об истории, чем о текущей полезности. Давным-давно я использовал по крайней мере один компьютер (что-то под названием Alpha Micro), который фактически имел дело с восьмеричными значениями.   -  person mah    schedule 11.03.2014
comment
В основном, если вы не хотите букв в ваших номерах. Octal обычно требует, чтобы дополнительные 0 неявно добавлялись слева, но обычно это не меняет значения.   -  person Mooing Duck    schedule 11.03.2014
comment
Если у вас 6-битный компьютер...   -  person Rob    schedule 11.03.2014
comment
@Rob Если у вас 36-битный компьютер. (Когда-то они были очень распространены.)   -  person James Kanze    schedule 11.03.2014
comment
Восьмеричная нотация обеспечивает удобное сокращение для прав доступа к файлам, которые сгруппированы по 3 (чтение, запись, выполнение) в Unix-системах.   -  person Caleb    schedule 11.03.2014
comment
Это не полезно, это вирус. Который сбежал из Мэйнарда, Массачусетс, в начале 1970-х годов, где находилась корпорация Digital Equipment Corporation (также известная как DEC). Во всей их документации и инструментах использовалась восьмеричная запись. Который, в свою очередь, заразил C и Unix, основным переносчиком которого был PDP-11. Который заразил многие последующие языки, поскольку их компиляторы и библиотеки времени выполнения часто впервые были реализованы на C.   -  person Hans Passant    schedule 11.03.2014
comment
Восьмеричное — очень полезная нотация в документации нескольких кодов операций ассемблера — из памяти, 80x86, Z80, MC68K. (ЦП ARM RISC имеет больше регистров, операторов и флагов, поэтому его сборка вместо этого основана на полубайтах.)   -  person Jongware    schedule 11.03.2014
comment
@HansPassant Ха. Я согласен с частью вируса, но, к счастью, кажется, что это достаточно далеко от правильного развития и возврата к исходным кодам.. ;-)   -  person user76568    schedule 11.03.2014
comment
'chmod 777' - единственное, о чем я могу думать.   -  person Martin James    schedule 11.03.2014
comment
Короче для ввода '\0' (восьмеричная управляющая последовательность), чем '\x0'.   -  person chux - Reinstate Monica    schedule 11.03.2014


Ответы (2)


Octal может точно представлять двоичную строку любой длины. Хотя это правда, что с 8-битными байтами и байтовой адресацией шестнадцатеричный вид кажется более естественным. Однако исторически...

  • на многих машинах были 36-битные слова, где восьмеричное имело смысл, и

  • на PDP-11 (на котором работали первые компиляторы C) машинные инструкции были разделены на 3 группы битов: старший бит, чтобы отметить, была ли операция над байтами или словами, затем 3-битный код операции и два шестибитных кода. битовые адреса, причем первые 3 бита используются для режима адресации, а вторые 3 — для регистра.

В то время, когда C был впервые изобретен, восьмеричная система, вероятно, использовалась чаще, чем шестнадцатеричная, и поэтому авторы языка предусмотрели ее. (Однако я не могу припомнить, чтобы он действительно использовался в последнем коде в течение очень долгого времени.)

person James Kanze    schedule 11.03.2014
comment
Я думаю, что технически каждый раз, когда вы видите буквальный 0 в коде, вы смотрите на восьмеричное :) - person Nigel Harper; 11.03.2014
comment
@NigelHarper Официально. На практике для значений от 0 до 7 нет разницы между восьмеричным и десятичным числом. - person James Kanze; 12.03.2014

Во времена разработки Unix были машины (DEC) с 36-битным словом. 36-битное слово состоит из четырех 9-битных байтов, каждый из которых представлен тремя восьмеричными цифрами.

person ouah    schedule 11.03.2014
comment
IBM также и в основном по доле рынка. На самом деле 18-значное правило COBOL исходит из 36-битного оборудования IBM и BCD. - person user207421; 11.03.2014