Для чего используются восьмеричные числа (база 8)? - PullRequest
8 голосов
/ 28 октября 2019

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

Мне интересно, почему включено основание 8 , например, int x = 0123;?

Я думаю, что может быть что-то похожее на тот факт, что в шестнадцатеричном формате емкость одного байта равна FF + 1 и так далее.

Ответы [ 3 ]

14 голосов
/ 28 октября 2019

Это должно было сделать язык знакомым для тех, кто знал C и т. Д. Тогда вопрос в том, зачем поддерживать его в тех!

Были архитектуры (различные PDP), которые использовали 18-битные слова ширины (и другие использовали 36-битные слова), поэтому литералы, где цифра имеет ширину 3 бита, были бы полезны.

Практически, единственное место, где я видел его, использованное в коде Java, это для указания разрешений в стиле UnixНапример, 0777, 0644 и т. д.

(Непростой ответ на вопрос о том, почему он поддерживается, - «получить голосование по на этот вопрос »).

7 голосов
/ 28 октября 2019

"Восьмеричные числа не так часто встречаются, как раньше. Однако Октал используется, когда число битов в одном слове кратно 3. Он также используется в качестве сокращения для представления прав доступа к файлам в системах UNIX. и представление номеров UTF8 и т. д. "

От: https://www.tutorialspoint.com/octal-number-system

4 голосов
/ 28 октября 2019

История компьютера (наука). Для представления группы битов база 10 не подходит, база 8 = 2 3 для 3 битов, а база 16 = 2 4 для 4 битов подходят лучше.

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

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

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

...