Literales de números octales:¿Cuando?¿Por qué?¿Alguna vez?[cerrado]

StackOverflow https://stackoverflow.com/questions/44569

  •  09-06-2019
  •  | 
  •  

Pregunta

Nunca he usado números octales en mi código ni encontré ningún código que los usara (a pesar de los hexadecimales y los bits).

Comencé a programar en C/C++ alrededor de 1994, ¿tal vez soy demasiado joven para esto?¿El código anterior usa octal?C incluye soporte para estos al anteponer un 0, pero ¿dónde está el código que usa estos números literales de base 8?

¿Fue útil?

Solución

Recientemente tuve que escribir un código de protocolo de red que acceda a campos de 3 bits.Octal resulta útil cuando quieres depurar eso.

Sólo para dar efecto, ¿puedes decirme cuáles son los campos de 3 bits de esto?

0x492492

Por otro lado, este mismo número en octal:

022222222

Ahora, por último, en binario (en grupos de 3):

010 010 010 010 010 010 010 010

Otros consejos

El único lugar donde me encuentro con literales octales hoy en día es cuando trato con los bits de permiso en archivos en Linux, que normalmente se representan como 3 dígitos octales, donde cada dígito representa los permisos para el propietario del archivo, el grupo y otros usuarios respectivamente.

p.ej.0755 (también solo 755 con la mayoría de las herramientas de línea de comandos) significa que el propietario del archivo tiene permisos completos (lectura, escritura, ejecución), y el grupo y otros usuarios solo tienen permisos de lectura y ejecución.

Representar estos bits en octal hace que sea más fácil determinar qué permisos están establecidos.Puede saber de un vistazo qué significa 0755, pero no 493 o 0x1ed.

De Wikipedia

En el momento en que Octal originalmente se usó ampliamente en la computación, sistemas como las mainframes IBM emplearon palabras de 24 bits (o 36 bits).Octal era una abreviatura ideal de binaria para estas máquinas porque ocho (o doce) dígitos podían mostrar concisamente una palabra de máquina completa (cada dígito octal que cubre tres dígitos binarios).También redujo los costos al permitir que los tubos de Nixie, las pantallas de siete segmentos y las calculadoras se usen para las consolas de operadores;Donde las pantallas binarias eran demasiado complejas para usar, las pantallas decimales necesitaban hardware complejo para convertir radixes y las pantallas hexadecimales necesarias para mostrar letras.

Sin embargo, todas las plataformas de computación modernas usan palabras de 16, 32 o 64 bits, con ocho bits que constituyen un byte.En tales sistemas se requerirían tres dígitos octales, con el dígito octal más significativo que representa deselegadamente solo dos dígitos binarios (y en una serie el mismo dígito octal representaría un dígito binario del siguiente byte).Por lo tanto, hexadecimal se usa más comúnmente en los lenguajes de programación hoy, ya que un dígito hexadecimal cubre cuatro dígitos binarios y todas las plataformas informáticas modernas tienen palabras de máquina que son uniformemente divisibles por cuatro.Algunas plataformas con un tamaño de palabra de potencia todavía tienen subvenciones de instrucciones que se entienden más fácilmente si se muestran en Octal;Esto incluye el PDP-11.La omnipresente arquitectura X86 de hoy en día también pertenece a esta categoría, pero Octal casi nunca se usa en esta plataforma.

-Adán

Nunca he usado números octales en mi código ni he encontrado ningún código que lo usara.

Apuesto a que tienes.Según el estándar, los literales numéricos que comienzan con cero son octales.Esto incluye, trivialmente, 0.Cada vez que has usado o visto un cero literal, este ha sido octal.Extraño pero cierto.:-)

La aviación comercial utiliza "etiquetas" octales (básicamente identificadores de tipo de mensaje) en el venerable estándar de autobús Arinc 429.Entonces, es bueno poder especificar valores de etiquetas en octal al escribir código para aplicaciones de aviónica...

También he visto el uso de octal en transpondedores de aviones.Un código de transpondedor modo 3a es un número de 12 bits que todo el mundo trata como 4 números octales.Hay un poco más de información sobre Wikipedia.Sé que generalmente no está relacionado con las computadoras, pero la FAA también usa computadoras :).

Es útil para el chmod y mkdir funciona en Unix, pero aparte de eso no puedo pensar en ningún otro uso común.

Entré en contacto con Octal a través PDP-11, y aparentemente también lo hizo el lenguaje C :)

Los archivos tar almacenan información como una cadena de valor entero octal.

No existe ningún motivo terrenal para modificar un estándar que se remonta al nacimiento del lenguaje y que existe en innumerables programas.Todavía recuerdo los personajes ASCII por sus valores octales, tendría que pensar en encontrar el valor hexadecimal de A, pero es 101 en Octal;El 0 numérico es 060...^C es 003...

Es decir, suelo utilizar la representación octal.

Ahora, si realmente quieres mejorar tu mina, echa un vistazo al formato de Word para el PDP-10...

Todavía existen muchos sistemas de control de procesos antiguos (Honeywell H4400, H45000, etc.) de finales de los años 60 y 70 que están diseñados para utilizar palabras de 24 bits con direccionamiento octal.Pensemos, por ejemplo, en cuándo se construyeron las últimas centrales nucleares en Estados Unidos.

Reemplazar estos sistemas industriales es una tarea bastante importante, por lo que es posible que tengas la suerte de encontrar uno en la naturaleza antes de que se extinga y te quedes boquiabierto ante sus magníficos formatos de punto flotante personalizados.

Cualquiera que haya aprendido a programar en un PDP-8 tiene un lugar cálido en su corazón para los números octales.El tamaño de la palabra era de 12 bits divididos en 4 grupos de 3 bits cada uno, por lo que -1 era 7777 octal.Este esquema se perpetuó en el PDP-11, que tenía palabras de 16 bits pero aún usaba representación octal para varias cosas, de ahí el esquema de permisos de archivos *NIX que sigue vigente hasta el día de hoy.

Octal es y fue más útil con el primer hardware de visualización disponible (pantallas de 7 segmentos).Estos displays originales no tenían los decodificadores disponibles posteriormente.

Por lo tanto, las salidas del registro digital se agruparon para adaptarse a la pantalla disponible que solo era capaz de mostrar ocho (8) símbolos:0,1,2 3,4,5,6,7 .

Además, los primeros tubos de visualización CRT eran pantallas de escaneo rasterizado y los generadores de símbolos de caracteres más simples eran equivalentes a las pantallas de 7 segmentos.

El conductor motivador fue, como siempre, la pantalla más barata posible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top