¿Cuándo usamos con frecuencia números octales y hexadecimales en programación y matemáticas?

Octal y Hex se usan porque son fáciles de convertir a binarios pero más legibles. Cada dígito hexadecimal se asigna a 4 bits binarios, y cada dígito octal representa 3, y puede convertir un dígito a la vez. Entonces, si veo 0xf11f, sé que es 1111000100011111 sin necesidad de hacer ningún cálculo.

Para máquinas modernas que usan palabras 8. 16. 32 y 64 bits, una palabra se puede presentar con exactamente 2, 4, 8 o 16 dígitos hexadecimales. Especialmente para números de 8 y 16 bits, esto es bastante útil ya que la mente humana puede reconocer y trabajar con estos patrones bastante cortos: con un poco de práctica puede hacer aritmética hexadecimal, y es muy fácil volver a convertir a binario. Lo mismo es cierto para octal si usa palabras de datos de 6 o 12 bits, pero esto es muy raro ahora. El único uso frecuente de octal que conozco es chmod, y eso es por razones históricas.

Así que usamos hexadecimal y octal cuando necesitamos preocuparnos por la representación binaria precisa de los datos. El código que usa operaciones bit a menudo usa constantes hexadecimales. Del mismo modo, los colores de 24 bits a menudo se representan en hexadecimal porque tiene 8 bits por color de canal, por lo que es mucho más conveniente que usar decimal.

Además de los colores, la representación de caracteres se realiza comúnmente con hexadecimal, ya que hay muchos caracteres que no se pueden mostrar (retorno, espacio) y muchos caracteres (especialmente caracteres de unicode de símbolos) que no son compatibles con todas las plataformas o fuentes. Además, no todos los editores de código son compatibles con Unicode. Usar la representación hexadecimal del personaje es un poco tedioso, pero siempre se portará bien a cualquier editor de código en cualquier plataforma.

Ambos entraron en uso común con los sistemas informáticos. Octal fue más frecuente en los primeros días cuando las palabras de máquina eran de 12, 24 o 36 bits (todas divisibles por 3). El hexadecimal se convirtió en la norma con el advenimiento de las palabras de máquina de 16/32/64 bits (todas divisibles por 16).

Curiosamente, el hexadecimal no siempre ha sido representado por los caracteres 0-9A-F. Una vez fue 0-9u-z, por ejemplo, en las máquinas Bendix en la década de 1950.

Esta es una generalización, pero usará números no decimales cuando trabaje con un diseño de interfaz diferido.

La utilidad de las bases del poder de dos es la facilidad de ver qué bits están activados y desactivados. UNIX / Linux chmod 664 (octal) significa que los bits primero, segundo, cuarto, quinto y séptimo de la izquierda están activados (110 110 010). Miras eso para ver que significa que el propietario y el grupo pueden leer y escribir, y todos los demás pueden leer.

Simple e intuitivo! Si has memorizado un montón de cosas! Me burlo, pero hubo un momento en que el tiempo de la computadora era más costoso y el tiempo del programador menos, por lo que una interfaz perezosa donde el programador hacía más trabajo tenía sentido.

Hoy, es por tradición (si cambia chmod hoy, habría guillotinas en las calles por la mañana) o porque el diseñador usó un número entero para sostener sus banderas y decidió exponerlo de esa manera a sus usuarios.

Ve un comportamiento similar en los números de serie (direcciones MAC y códigos de operación de microprocesador, por ejemplo). Observe la similitud en que a nadie le importa cuál es el valor numérico. Es solo que los grupos de bits son distintos de otros grupos de bits.

Hay una excepción que conozco: existe una fórmula para encontrar el enésimo dígito de Pi sin mirar los dígitos anteriores, pero no creo que el trabajo se haya generalizado.

Un ejemplo heredado es el Univac 1830, que era una computadora de 30 bits. Diez dígitos octales para ingresar programas y datos manualmente. El Univac 1832 era una computadora de 32 bits, pero también se usaba octal ya que Univac ya proporcionaba terminales para el 1830. Los bits más significativos obviamente estaban truncados a dos bits.

La notación octal es en gran parte obsoleta, principalmente debido al hecho de que dos dígitos octales, que se pueden usar para representar un solo carácter de 6 bits, producen solo 64 permutaciones de caracteres. Dado que se requieren 52 permutaciones de bit de dos dígitos octales para representar solo el conjunto de caracteres alfabéticos en inglés, estos dos caracteres octales dejan solo 10 números (0-9) y dos caracteres especiales ($, &, etc.) restantes dentro del bit permutaciones; totalmente insuficiente

Desde la década de 1960, la notación octal con sus dos dígitos de tres bits que representan un único código de caracteres de 6 bits se ha reemplazado por la notación hexadecimal con sus dos dígitos ‘hexadecimales’ de 4 bits que representan un único código de caracteres de 8 bits que produce permutaciones de 256 caracteres. Esto admite un conjunto de caracteres mucho más rico. Aun así, el conjunto de caracteres chinos requiere dos códigos de 8 bits para representar sus 40,000 caracteres.

Al tratar con registros de 32 bits, 64 bits, 128 bits e incluso 256 bits y la dirección de memoria o el ancho del bus de datos, la notación hexadecimal se mantiene ya que es conveniente y fácil de entender para aquellos que deben lidiar tanto con el hardware como con el software de la computadora. niveles primitivos

La notación hexadecimal se lleva al diseño de hardware en gran medida por el hecho de que la unidad más pequeña de datos de memoria direccionables es el byte de 8 bits representado por sus dos dígitos ‘hexadecimales’.

Los lenguajes modernos buscan ocultar la tecnología subyacente a nivel de bits, pero en las etapas de diseño y resolución de problemas, la familiaridad con la noción hexadecimal es esencial y los diseñadores experimentados pueden realizar fácilmente cálculos aritméticos en sus cabezas no solo en decimal, sino en octal o ‘hexadecimal’ como bien.