Java надає способи запису числових літералів у бази 2, 8, 10 та 16.
Мене цікавить, чому включена база 8 , наприклад int x = 0123;
?
Я думаю, що може бути щось подібне до того, що в шістнадцятковій ємності один байт - FF + 1 тощо.
Java надає способи запису числових літералів у бази 2, 8, 10 та 16.
Мене цікавить, чому включена база 8 , наприклад int x = 0123;
?
Я думаю, що може бути щось подібне до того, що в шістнадцятковій ємності один байт - FF + 1 тощо.
Відповіді:
Ця відповідь була написана на оригінальне запитання "Чому написання числа в базі 8 корисно?"
Це було зробити мову знайомою для тих, хто знав С і т. Д. Тоді питання полягає в тому, чому підтримувати її в тих!
Були архітектури (різні PDP), які використовували 18-бітові слова (а інші використовували 36-бітові слова), тому літерали, де цифра шириною 3 біт, були б корисні.
Практично єдине місце, яке я бачив, як це використовується в коді Java, - це визначення дозволів у стилі unix, наприклад 0777
, 0644
тощо.
(Відповідь на те, чому це підтримується, "відповісти на це питання ").
"Восьмі восьмі числа не такі поширені, як раніше. Проте Octal використовується, коли кількість бітів в одному слові кратно 3. Він також використовується як скорочення для представлення дозволів на файли в системах UNIX та представлення Номери UTF8 тощо "
Історичний комп'ютер (наука). Для представлення гупи бітів основа 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 біта та адресація).
Оригінальна відповідь "Для чого використовуються восьмеричні числа (база 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