Java proporciona formas de escribir literales numéricos en las bases 2, 8, 10 y 16.
Me pregunto por qué se incluye la base 8 , por ejemplo int x = 0123;
.
Estoy pensando que podría haber algo similar al hecho de que en hexadecimal la capacidad de un byte es FF + 1 , y así sucesivamente.
Respuestas:
Esta respuesta fue escrita para la pregunta original, "¿Por qué es útil escribir un número en la base 8?"
Fue para familiarizar el lenguaje a quienes conocían C, etc. ¡Entonces la pregunta es por qué apoyarlo en esos!
Había arquitecturas (varios PDP) que usaban palabras de 18 bits de ancho (y otras usaban palabras de 36 bits), por lo que los literales donde el dígito tiene 3 bits de ancho serían útiles.
Prácticamente, el único lugar que he visto que se usa en el código Java es para especificar permisos de estilo Unix, por ejemplo
0777
,0644
etc.(La respuesta irónica de por qué es compatible es "obtener votos a favor sobre esta pregunta ").
fuente
"Los números octales no son tan comunes como solían ser. Sin embargo, Octal se usa cuando el número de bits en una palabra es múltiplo de 3. También se usa como una forma abreviada para representar permisos de archivos en sistemas UNIX y representación de Números UTF8, etc. "
De: https://www.tutorialspoint.com/octal-number-system
fuente
Historia de la informática (ciencia). Para representar un grupo de bits, una base 10 no se ajusta, la base 8 = 2 3 para 3 bits y la base 16 = 2 4 para 4 bits se ajustan mejor.
La ventaja de la base 8 es que todos los dígitos son realmente dígitos: 0-7, mientras que la base 16 tiene "dígitos" 0-9A-F.
Para 8 bits de una base de bytes 16 (hexadecimal) es un mejor ajuste, y ganó. Para Unix base 8 octal, a menudo todavía se usa para
rwx
bits (lectura, escritura, ejecución) para usuarios, grupos y otros; de ahí números octales como 0666 o 0777.El hexadecimal es omnipresente, sobre todo porque los tamaños de palabra de las computadoras hoy en día son de varios bytes. Que los 8 bits se
byte
convirtieron en un estándar es otra historia relacionada difícil (2 3 bits y direccionamiento).fuente
Uso común de Octal
Como abreviatura de binario: para máquinas informáticas (como UNIVAC 1050, PDP-8, ICL 1900, etc.), Octal se ha utilizado como abreviatura de binario porque su tamaño de palabra es divisible por tres (cada dígito octal representa tres binarios dígitos). Entonces, dos, cuatro, ocho o doce dígitos podrían mostrar de manera concisa una palabra de máquina completa. También redujo los costos al permitir el uso de tubos Nixie, pantallas de siete segmentos y calculadoras para las consolas del operador, donde las pantallas binarias eran demasiado complejas de usar, las pantallas decimales necesitaban hardware complejo para convertir los radios, y las pantallas hexadecimales necesitaban mostrar más números. .
Representación de palabras de 16, 32 o 62 bits:Todas las plataformas informáticas modernas usan palabras de 16, 32 o 64 bits, divididas en bytes de ocho bits. En tales sistemas, se requerirían tres dígitos octales por byte, con el dígito octal más significativo representando dos dígitos binarios (más un bit del siguiente byte significativo, si lo hay). La representación octal de una palabra de 16 bits requiere 6 dígitos, pero el dígito octal más significativo representa (bastante poco elegante) solo un bit (0 o 1). Esta representación no ofrece forma de leer fácilmente el byte más significativo porque está manchado por cuatro dígitos octales. Por lo tanto, el hexadecimal se usa más comúnmente en los lenguajes de programación hoy en día, ya que dos dígitos hexadecimales especifican exactamente un byte. Algunas plataformas con un tamaño de palabra de potencia de dos todavía tienen subpalabras de instrucciones que se entienden más fácilmente si se muestran en octal; Esto incluye la familia PDP-11 y Motorola 68000. La arquitectura x86 ubicua de hoy en día también pertenece a esta categoría, pero rara vez se utiliza octal en esta plataforma.
Descripciones de codificación: Ciertas propiedades de la codificación binaria de códigos de operación en la arquitectura moderna x86 se hacen más evidentes cuando se muestran en octal, por ejemplo, el byte ModRM, que se divide en campos de 2, 3 y 3 bits, por lo que octal puede ser útil para describir estas codificaciones
Cálculos y permisos de acceso a archivos: Octal a veces se usa en computación en lugar de hexadecimal, quizás con mayor frecuencia en los tiempos modernos junto con permisos de archivos en sistemas Unix (acceso con permiso a chmod). Tiene la ventaja de no requerir símbolos adicionales como dígitos (el sistema hexadecimal es base 16 y, por lo tanto, necesita seis símbolos adicionales más allá de 0–9).
Pantallas digitales: los números octales también se utilizan para mostrar contenido digital en una pantalla, ya que tiene menos número de símbolos utilizados para la representación.
Representación gráfica de cadenas de bytes: algunos lenguajes de programación (C, Perl, Postscript, etc.) tienen una representación de textos / gráficos en Octal con escape como \ nnn. La representación octal es particularmente útil con bytes no ASCII de UTF-8, que codifica grupos de 6 bits, y donde cualquier byte de inicio tiene valor octal \ 3nn y cualquier byte de continuación tiene valor octal \ 2nn.
Aritmética de coma flotante temprana: Octal también se usó para coma flotante en las computadoras Atlas de Ferranti (1962), Burroughs B5500 (1964), Burroughs B5700 (1971), Burroughs B6700 (1971) y Burroughs B7700 (1972).
En Transpondedores: la aeronave transmite un código, expresado como un número de cuatro dígitos octales cuando es interrogado por un radar terrestre. Este código se utiliza para distinguir diferentes aviones en la pantalla del radar.
Lecturas adicionales: https://en.wikipedia.org/wiki/Octal
fuente