Для чого використовуються восьмеричні числа (основа 8)?


11

Java надає способи запису числових літералів у бази 2, 8, 10 та 16.

Мене цікавить, чому включена база 8 , наприклад int x = 0123;?

Я думаю, що може бути щось подібне до того, що в шістнадцятковій ємності один байт - FF + 1 тощо.


7
Я вважаю, що ваше запитання "Для чого використовуються восьмеричні числа?"
GetMeARemoteJob

Так, саме так я мав би сформулювати питання. Дякую за всі цікаві відповіді. Я думав, що це може мати історичну основу, але я не мав досвіду, необхідного для того, щоб покласти свій палець.
jokinjo

Відповіді:


16

Ця відповідь була написана на оригінальне запитання "Чому написання числа в базі 8 корисно?"

Це було зробити мову знайомою для тих, хто знав С і т. Д. Тоді питання полягає в тому, чому підтримувати її в тих!

Були архітектури (різні PDP), які використовували 18-бітові слова (а інші використовували 36-бітові слова), тому літерали, де цифра шириною 3 біт, були б корисні.

Практично єдине місце, яке я бачив, як це використовується в коді Java, - це визначення дозволів у стилі unix, наприклад 0777, 0644тощо.

(Відповідь на те, чому це підтримується, "відповісти на це питання ").


О, хороший момент, я забув про дозволи на файли в Linux! Мінімальне використання наявних бітів ... восьмигранно відповідає рахунку.
sarlacii

1
@sarlacii "мінімальне використання" нічого спільного з цим не має, "восьмерична" -значність int literal існує лише у вихідному коді. Отримати дозволу, позначені восьмеричним літералом, просто простіше, оскільки цифри безпосередньо відповідають користувачеві, групі та ін.
Енді Тернер

Перше програмування я робив на комп'ютері з основним кадром, який мав 60 біт слів і 6 біт набору символів. Адреси складали 18 біт. Звичайно, ми використовували восьмерик. Коли я вперше зустрічався шістнадцятковим, було досить своєрідно бачити літери в кількості.
Оле ВВ

@Andy я все ще вважаю це мінімальним використанням, хоча ... вибір довжини бітів пов'язаний не лише з кодом. Він також обмежений ресурсом. напр. Я можу вирішити використовувати 8 біт для кодування кожного дозволу, маскуючи біти, які не використовуються, вимагаючи 3 байти, а точніше, використовувати мінімум 3 біти, а потім кодувати восьмеричні числа, щоб використовувати лише 1 і половину байтів (використовуючи 4 трохи як липкий). Але так, це довільно, як тільки ви перейдете до рівня бітів ... так як ви могли прочитати комбіновану восьмеричну величину як шістнадцяткову.
sarlacii

7

"Восьмі восьмі числа не такі поширені, як раніше. Проте Octal використовується, коли кількість бітів в одному слові кратно 3. Він також використовується як скорочення для представлення дозволів на файли в системах UNIX та представлення Номери UTF8 тощо "

Від: https://www.tutorialspoint.com/octal-number-system


3
Насправді не "кількість біт у слові" - як це було використано на 16-бітних мінікомп'ютерах у вигляді високого біта 0/1, а потім 5 восьмеричного числа. Кращий опис може бути: Використовується, коли розмір поля в слові кратний 8 бітам. Ці ж комп’ютери мали (часто) 8 регістрів - так що в регістрі, зазначеному в інструкції, було б 3-бітове поле для назви реєстру, інструкція з реєстрації в регістр мала б два такі 3-бітні поля; ці ж комп’ютери часто мали 3-розрядний код або 3-розрядний код з "втечею" (наприклад, 0111) до 6-бітного коду; пр. і т. д.
Давидбак

4

Історичний комп'ютер (наука). Для представлення гупи бітів основа 10 не підходить, основа 8 = 2 3 на 3 біти, а основа 16 = 2 4 на 4 біти краще підходить.

Перевага бази 8 полягає в тому, що всі цифри є дійсно цифрами: 0-7, тоді як база 16 має "цифри" 0-9A-F.

Для 8 біт байтової бази 16 (шістнадцятковий) краще підходить і виграв. Для основи Unix 8 восьмигранних часто все ще використовується для rwxбітів (читання, запис, виконання) для користувача, групи та інших; звідси восьмеричні числа, наприклад 0666 або 0777.

Шістнадцятковий є всюдисущим, що не в останню чергу через те, що розміри слів комп’ютерів на сьогоднішній день є декількома байтами. Те, що 8 біт byteстав стандартом, - це інша важка історія (2 3 біта та адресація).


0

Оригінальна відповідь "Для чого використовуються восьмеричні числа (база 8)?"

Поширене вживання окталу

  • Як абревіатура двійкового: Для обчислювальних машин (таких як UNIVAC 1050, PDP-8, ICL 1900 та ін.) Octal використовували як абревіатуру двійкових, оскільки їх розмір слова ділиться на три (кожна восьмизначна цифра являє собою три двійкові цифр). Тож дві, чотири, вісім чи дванадцять цифр могли стисло відображати ціле машинне слово. Він також скорочує витрати, дозволяючи використовувати трубки Nixie, семисегментні дисплеї та калькулятори для консолей оператора, де двійкові дисплеї були занадто складними для використання, десятковим дисплеям потрібне складне обладнання для перетворення радікусів, а шістнадцяткові дисплеї, необхідні для відображення більшої кількості цифр .

  • 16-, 32- або 62-бітове подання слів:Усі сучасні обчислювальні платформи використовують 16-, 32- або 64-бітні слова, додатково розділені на восьмибітні байти. У таких системах знадобляться три восьмі цифри на один байт, причому найзначніша восьмерична цифра представляє дві двійкові цифри (плюс один біт наступного значного байта, якщо такий є). Октальне представлення 16-бітного слова вимагає 6 цифр, але найзначніша восьмерична цифра представляє (зовсім неелегантно) лише один біт (0 або 1). Це подання не може легко прочитати найзначніший байт, оскільки воно намазане чотирма восьмизначними цифрами. Тому сьогодні в мовах програмування найчастіше використовується шістнадцятковий, оскільки дві шістнадцяткові цифри точно задають один байт. Деякі платформи з розміром слова в два рази все ще мають підручники з інструкціями, які легше зрозуміти, якщо їх відображати у вісімці; сюди входить сім'я PDP-11 та Motorola 68000. Сучасна всюдисуща архітектура x86 також належить до цієї категорії, але восьмери на цій платформі рідко використовуються.

  • Описи кодування: Деякі властивості двійкового кодування опкодів у сучасній архітектурі x86 стають більш зрозумілими при відображенні у восьмериці, наприклад, байт ModRM, який поділяється на поля 2, 3 та 3 біта, тому восьмери можуть бути корисними при описі ці кодування.

  • Обчислення та дозволи на доступ до файлів: Octal іноді використовується для обчислень замість шістнадцяткових, можливо, найчастіше в сучасний час у поєднанні з дозволами на файли в системах Unix (У дозволі на доступ до chmod). Він має перевагу в тому, що не вимагає додаткових символів як цифр (шістнадцяткова система є базовою-16 і тому потребує шести додаткових символів понад 0–9).

  • Цифрові дисплеї: восьмеричні числа також використовуються для відображення цифрового вмісту на екрані, оскільки він містить меншу кількість символів, що використовуються для подання.

  • Графічне представлення рядків байтів: Деякі мови програмування (C, Perl, Postscript тощо) мають представлення текстів / графічних зображень у Octal з уникнутими як \ nnn. Октальне представлення особливо зручно з байтами, що не належать до ASCII, UTF-8, що кодує групи з 6 біт, і де будь-який початковий байт має вісімкове значення \ 3nn, а будь-який байт продовження має вісімкове значення \ 2nn.

  • Рання арифметика з плаваючою комою: Octal також використовувався для плаваючої точки в комп'ютерах Ferranti Atlas (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) і Burroughs B7700 (1972).

  • У транспондерах: літаки передають код, виражений чотири восьмизначним числом при допиті наземним радаром. Цей код використовується для розрізнення різних літальних апаратів на екрані радарів.

Подальші читання: https://en.wikipedia.org/wiki/Octal


1
Мені подобалося читати запис у Вікіпедії, особливо, про те, як використовувати пробіли між пальцями. Однак здебільшого статтю можна сказати як поштовх мого питання. Як я підозрював, неподільність розмірів слів, що використовуються в сучасній архітектурі комп'ютера, робить восьмеричне подання не корисним, і один із пунктів, який ви цитуєте як "16-, 32-, 64-бітні слова ...", зовсім не зрозумілий. Поясніть, будь ласка, як "найзначніший байт розмазується чотирма восьмизначними цифрами" та "Деякі платформи з розміром слова двох розмірів все ще мають
підслідування з підрядчиками
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.