Подтвердить что ты не робот

Литералы октальных чисел: когда? Зачем? Когда-либо?

Я никогда не использовал восьмеричные числа в своем коде и не использовал какой-либо код, который использовал его (шестнадцатеричное и бит-скрипичное).

Я начал программировать на C/С++ около 1994 года, так что, может быть, я слишком молод для этого? Использует ли старый код восьмеричный? C включает поддержку для них, добавив 0, но где код, который использует эти базовые номера букв 8?

4b9b3361

Ответ 1

Недавно мне пришлось написать код сетевого протокола, который обращается к 3-битным полям. Octal пригодится, когда вы хотите отладить это.

Просто для эффекта, можете ли вы рассказать мне, что это за 3-битные поля?

0x492492

С другой стороны, это же число в восьмеричном:

022222222

Теперь, наконец, в двоичном (в группах по 3):

010 010 010 010 010 010 010 010

Ответ 2

Единственное место, где я сталкиваюсь с восьмеричными литералами в наши дни, - это иметь дело с битами разрешения на файлы в Linux, которые обычно представляются как 3 восьмеричные цифры, где каждая цифра представляет разрешения для владельца файла, группы и других пользователей соответственно.

например. 0755 (также всего 755 с большинством инструментов командной строки) означает, что владелец файла имеет полные разрешения (чтение, запись, выполнение), а группа и другие пользователи имеют только права на чтение и выполнение.

Представление этих битов в восьмеричном позволяет легче определить, какие разрешения установлены. Вы можете сразу сказать, что означает 0755, но не 493 или 0x1ed.

Ответ 3

От Wikipedia

В то время, когда первоначально было восьмеричное стал широко использоваться в вычислительной технике, таких систем, как мэйнфреймы IBM используются 24-битные (или 36-битные) слова. Октал был идеальной аббревиатурой двоичный для этих машин, потому что восемь (или двенадцать) цифр могли бы вкратце отобразить всю машину слово (каждая восьмеричная цифра, охватывающая три двоичные цифры). Это также сокращает расходы на позволяя трубки Nixie, семисегментные дисплеи и калькуляторы, которые будут использоваться для операторских консолей; где бинарные дисплеи были слишком сложны для использование, десятичные отображения необходимы аппаратное обеспечение для конвертирования оснований и шестнадцатеричные дисплеи, необходимые для отображения буквы.

Все современные вычисления платформы, однако, используют 16-, 32- или 64-битные слова с восемью битами байт. На таких системах три восьмеричные потребуются цифры. самая значительная восьмеричная цифра неявно представляя только два двоичные цифры (и в серии такая же восьмеричная цифра будет представлять одну двоичная цифра из следующего байта). Следовательно, шестнадцатеричный чаще используемый сегодня на языках программирования, поскольку шестнадцатеричная цифра охватывает четыре двоичные цифры и все современные вычисления платформы имеют машинные слова, которые равномерно делимый на четыре. Некоторые платформы с двухзначным словом размер по-прежнему имеет подзаголовки которые легче понять, если отображается в восьмеричном; это включает PDP-11. Современная вездесущая x86 архитектура относится к этой категории также, но восьмеричный почти никогда используемых на этой платформе.

-Adam

Ответ 4

Я никогда не использовал восьмеричные числа в своем кода и не встречаются ни с каким кодом, который использовал его.

Готов поспорить. Согласно стандарту, числовые литералы, начинающиеся с нуля, являются восьмеричными. Это включает тривиально 0. Каждый раз, когда вы использовали или видели буквальный ноль, это было восьмеричное. Удивительно, но факт.: -)

Ответ 5

Коммерческая авиация использует восьмизначные "метки" (в основном идентификаторы типа сообщений) в почтенном стандарте шины Arinc 429. Поэтому возможность указывать значения меток в восьмеричном при написании кода для приложений для авионики приятно...

Ответ 6

Я также видел восьмеричное использование в транспондерах самолетов. Код транспондера режима-3а - это 12-разрядное число, которое каждый имеет дело с 4 восьмеричными номерами. Существует более подробная информация о Wikipedia. Я знаю, что это вообще не связано с компьютером, но FAA тоже использует компьютеры:).

Ответ 7

Он полезен для функций chmod и mkdir на земле Unix, но помимо этого я не могу думать о каких-либо других распространенных применениях.

Ответ 8

Я вступил в контакт с Octal через PDP-11, и поэтому, по-видимому, язык C:)

Ответ 9

В конце 60-х и 70-х годов существует еще множество старых систем управления технологическими процессами (Honeywell H4400, H45000 и т.д.), которые предназначены для использования 24-битных слов с восьмеричной адресацией. Подумайте, когда в Соединенных Штатах были построены последние атомные электростанции в качестве одного из примеров.

Замена этих промышленных систем - довольно серьезное дело, поэтому вам может просто посчастливиться встретиться с одним из них в дикой природе, прежде чем они выйдут и опасаются великолепных пользовательских форматов с плавающей запятой!

Ответ 10

tar файлы хранят информацию как восьмеричную целую строку значений

Ответ 11

Любой, кто научился программировать на PDP-8, имеет теплое место в своем сердце для восьмеричных чисел. Размер слова составлял 12 бит, разделенных на 4 группы по 3 бита каждый, поэтому -1 был 7777 восьмеричным. Эта схема была увековечена в PDP-11, которая имела 16-битные слова, но все еще использовала восьмеричное представление для разных вещей, следовательно, схема разрешения файлов NIX, которая живет по сей день.

Ответ 12

Нет оснований для изменения стандарта, который восходит к рождению языка и который существует в неисчислимом числе программ. Я все еще помню символы ASCII восьмеричные значения, приходилось думать, чтобы придумать шестнадцатеричное значение A, но оно равно 101 в восьмеричном; числовое 0 - 060... ^ C - 003...

То есть, я часто использую восьмеричное представление.

Теперь, если вы действительно хотите согнуть свою шахту, посмотрите формат слова для PDP-10...

Ответ 13

Octal является и был наиболее полезным с первым доступным оборудованием дисплея (7-сегментные дисплеи). Эти оригинальные дисплеи не имели декодеров, доступных позже.

Таким образом, выходы цифровых регистров были сгруппированы в соответствии с доступным дисплеем, который мог отображать только восемь (8) символов: 0,1,2 3,4,5,6,7.

Также первые дисплеи с ЭЛТ-дисплеями были растровыми дисплеями, а простые генераторы символьных символов были эквивалентны 7-сегментным дисплеям.

Мотивационный драйвер был, как всегда, наименее дорогим дисплеем.