¿Para qué se usan los números octales (base 8)?

11

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.

jokinjo
fuente
77
Creo que su pregunta es "¿Para qué se usan los números octales?"
GetMeARemoteJob
Sí, así es como debería haber formulado la pregunta. Gracias por todas las respuestas interesantes. Pensé que podría tener una base histórica, pero no he tenido la experiencia necesaria para señalarlo.
jokinjo

Respuestas:

16

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, 0644etc.

(La respuesta irónica de por qué es compatible es "obtener votos a favor sobre esta pregunta ").

Andy Turner
fuente
Oh, buen punto, ¡me olvidé de los permisos de archivos en Linux! Uso mínimo de bits disponibles ... octal se ajusta a la factura.
sarlacii
1
El "uso mínimo" de @sarlacii no tiene nada que ver con esto, el carácter "octal" de un literal int solo existe en el código fuente. Simplemente es más fácil asimilar los permisos denotados por un literal octal porque los dígitos corresponden directamente al usuario, grupo y otros.
Andy Turner
Hice mi primera programación en una computadora central que tenía palabras de 60 bits y un conjunto de caracteres de 6 bits. Las direcciones eran de 18 bits. Por supuesto que usamos octal. Cuando conocí por primera vez el hexadecimal, era bastante peculiar ver letras en un número.
Ole VV
@ Andy todavía lo considero como un uso mínimo ... la elección de la longitud de bits no solo está relacionada con el código. También está limitado por los recursos. p.ej. Podría elegir usar 8 bits para codificar cada permiso, enmascarando los bits no utilizados, que requieren 3 bytes, o más bien usar el mínimo, 3 bits, y luego codificar los números octales, para usar solo 1 y medio bytes (usando el cuarto poco pegajoso) Pero sí, es arbitrario una vez que va al nivel de bits ... ya que de todos modos podría leer el valor octal combinado como hexadecimal.
sarlacii
7

"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

tu
fuente
3
No es realmente "número de bits en una palabra", ya que se utilizó en minicomputadoras de 16 bits en forma de un bit alto 0/1 y luego un número octal de 5. Una mejor descripción podría ser: Se usa cuando el tamaño de un campo en una palabra es un múltiplo de 8 bits. Esas mismas computadoras tenían (con frecuencia) 8 registros, por lo que un registro especificado en una instrucción tendría un campo de 3 bits para nombrar un registro, una instrucción de registro a registro tendría dos de esos campos de 3 bits; esas mismas computadoras con frecuencia tenían un código de operación de 3 bits, o un código de operación de 3 bits con un "escape" (por ejemplo, 0111) a un código de operación de 6 bits ; etc. etc.
davidbak
4

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 rwxbits (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 byteconvirtieron en un estándar es otra historia relacionada difícil (2 3 bits y direccionamiento).

Joop Eggen
fuente
0

Respuesta original para "¿Para qué se usan los números octales (base 8)?"

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

Jishan Shaikh
fuente
1
Disfruté leyendo la entrada de Wikipedia, especialmente sobre el uso de los espacios entre los dedos para contar. Sin embargo, en su mayor parte, podría decirse que el artículo es el ímpetu de mi pregunta. Como sospeché, la indivisibilidad de los tamaños de palabra utilizados en la arquitectura actual de la computadora hace que la representación octal no sea útil, y uno de los párrafos que usted cita como "palabras de 16, 32, 64 bits ..." no está claro en absoluto. ¿Podría explicar por favor cómo "el byte más significativo está manchado en cuatro dígitos octales" y "Algunas plataformas con un tamaño de dos palabras aún tienen subpalabras de instrucción ..."
jokinjo