Me golpeé la cabeza contra la mesa durante unos 20 minutos mirando un error totalmente extraño en PHP, y luego me di cuenta de que hay octal. El <% (* & #> octal.
En resumen, rellené algunos literales con ceros para que el código estuviera alineado, lo sé, gran error. Se olvidó de los octales.
La pregunta es, ¿alguien usa octals para algo más que permisos de archivo? (Personalmente prefiero chmod ugo+rwx
pero entiendo que si tienen que ser generados programáticamente, es útil usar los octales). ¿Pero son útiles en cualquier otra situación?
0o
prefijo (que es consistente0x
y0b
quizás un poco difícil de distinguir00
). Y desde Python 3, los ceros iniciales adicionales son un error de sintaxis para evitar este tipo de errores.Respuestas:
Según Wikipedia , los octales no son tan comunes como solían ser. Como otros ya han mencionado, en el pasado, los sistemas solían tener una palabra de 12/24/36 bits, que se representa más fácilmente en octal que en hexadecimal, pero actualmente, las arquitecturas x86 e i64 usan un 16/32/64 bit palabra, que se representa más fácilmente en hexadecimal y francamente fea en octal.
Los usos actuales, sin embargo, incluyen:
\3nn
y cualquier byte de continuación\2nn
)0
en algún lenguaje de programación que admita octals, como escribió este usuario .Tenga en cuenta que los lenguajes de programación modernos a veces ya no admiten octals debido a la falta de casos de uso y la posibilidad de errores. C # es un ejemplo, ya que Eric Lippert escribió esto en la tercera y cuarta edición de TCPL :
Relacionado, y solo para referencia y curiosidad, Code, The Hidden Language of Computer Hardware tiene una excelente explicación fácil de seguir sobre sistemas de números octales y otros en la página 55-63 .
fuente
parseInt(011)==9
Octal fue ampliamente utilizado hace unos 50 años por Digital Equipment Corp. (DEC) y otras compañías que tenían computadoras con una palabra de 12 bits (por ejemplo, el PDP-8) u otros múltiplos de seis, como 18 y 36 (por ejemplo, UNIVAC 1108 ) Usé tanto el PDP-8 como el UNIVAC 1108 en la escuela de posgrado. Los caracteres en ambas máquinas generalmente usan seis bits, no 8.
Formato de instrucción PDP-8: tenga en cuenta que los bits están numerados 0 -> 11. El bit 0 era el MSB (bit más significativo).
Cuando DEC salió con el PDP-11 de 16 bits, continuaron usando octal en su documentación en lugar de hexadecimal como lo usaban los otros fabricantes de minicomputadoras que salían con máquinas de 16 bits en ese momento. Esto probablemente se debió a los múltiples campos de 3 bits dentro de los formatos de instrucción PDP-11 como Register, Mode y Src / Dest que se prestaron para ser decodificados como un dígito octal. (Gracias a John Strohm por señalar esto).
Curiosamente, cuando Motorola lanzó su microprocesador 68000, que estaba muy influenciado por el PDP-11 y tenía los mismos campos de Modo y Registro de 3 bits en las instrucciones, eligieron usar solo hexadecimal en su documentación.
Debido a que el PDP-11 usaba notación octal, los códigos de permiso originales para Unix, que aparecieron por primera vez en el PDP-11, también usaban octal. Este legado persiste en Linux, donde el comando chmod todavía usa octal para especificar cada uno de los campos 'rwx' de tres bits.
Algunas curiosidades más: CompuServe, que era un servicio en línea de acceso telefónico ampliamente utilizado en los años 80 y principios de los 90 (antes de ser eclipsado por AOL), funcionaba en minicomputadoras DEC, al menos originalmente. Todos los ID de usuario eran numéricos, y en algún momento hice la observación de que nunca incluyeron 8 o 9 en ellos, por lo tanto estaban en octal. Mi antigua identificación de CIS era 70205.
fuente
Heathkit los usó para el panel frontal de su H-8 y para listas de lenguaje ensamblador de su software de panel frontal (llamado PAM-8). Salir conmigo mismo, lo sé.
Hoy en día los ojos son muy raros; todos parecen usar hechizo. Pero los números aún se ven como números en octal, y no necesita una fila adicional de teclas para los dígitos A a F.
fuente
Una de las razones por las que octal ve el uso es porque es la base más grande que tiene una potencia de 2 para la que no necesita ningún carácter especial, es decir, todos los dígitos pueden ser numéricos. La base 16 (la siguiente desde la base 8) requiere dígitos no numéricos (generalmente A, B, C, D, E, F).
fuente
Yo uso octal todos los días. Cada vez que necesito modificar un archivo utilizo octal (soy anterior a la notación u + r ...). Cada vez que quiero incrustar un carácter de control dentro de una cadena, uso octal ... (Sí, podría usar hexadecimal, pero octal es lo que uso).
fuente
Cualquiera que necesite expresar combinaciones de bits agrupados en tres.
¿Por qué alguien usa hexadecimal?
Cosas fuera de mi cabeza que se expresan como números octales:
ncurses
bibliotecafuente
7 * 6
o07 * 06
? Utilizamos decimales para representar números, ya que podemos manejarlos mejor y hexadecimales para representar números muy cercanos a cómo la máquina los almacena. Y hacemos esto mucho. Este sitio está lleno de evidencia de ello.Cuando trabajaba en mainframes CDC (con una palabra de 60 bits, palabra de 12 bits para la PPU), todos los volcados de núcleo y demás se hicieron en octal (20 dígitos octales por palabra, 4 por palabra PPU).
fuente
Al igual que la hexadecimal, la notación octal a veces se usa para especificar códigos de caracteres. Puede ser útil por la misma razón que el hexadecimal: es más compacto que binario, pero muy fácil de traducir a binario en tu cabeza.
fuente
Al igual que Hex, los números octales son fáciles de convertir de binarios. Simplemente agrupe los dígitos binarios en grupos de tres, comenzando por la derecha.
fuente
No Nunca los usé. Ni siquiera para configurar permisos de archivos, porque lo hago muy raramente me resulta difícil de leer.
Entonces sí, existe el beneficio obvio de la conversión desde y hacia binario.
Sin embargo, como ya señaló @Mason, el hex es mucho más "natural", porque 2 dígitos hexadecimales forman un byte. Es útil para representar colores RGB / ARGB de 24/32 bits, direcciones IP, máscaras de bytes, etc. Octal en el otro lado no es realmente práctico, porque rara vez tiene escenarios en los que trabaja en términos de grupos de 3 bits.
Los permisos de archivos son, de hecho, lo único en lo que puedo pensar. Y si no hay un área de uso a partir de ahora, dudo que alguna vez haya una. Desde los últimos 20 años, el espacio se ha vuelto tan barato, se ha vuelto muy poco frecuente empaquetar la información de manera tan ajustada, a costa de la alineación, la facilidad de uso y la extensibilidad.
fuente
Un poco aparte, pero un uso público está en el metro de Londres. Cada tren tiene una identidad física y una identidad separada en los horarios que se muestra cuando está en servicio; consulte aquí: https://upload.wikimedia.org/wikipedia/commons/4/49/LUL-S-Stock-at -Watford.jpg (tenga en cuenta el 402 en la parte superior de la pantalla de destino). Aunque los componentes electrónicos de las pantallas están basados en decimales estándar, nunca ve los dígitos 8 o 9 porque están vinculados a hardware heredado basado en octal en el sistema de señalización.
fuente