¿Por qué octal y hexadecimal? Las computadoras usan decimales binarios y humanos

16

¿Por qué utilizamos otras bases que no son binarias (para computadoras) ni decimales (para humanos)?

Las computadoras terminan representándolos en binario, y los humanos prefieren obtener su representación decimal. ¿Por qué no apegarse a estas dos bases?

Quora Feans
fuente
Tiendo a pensar que no hay una razón sólida para usar hexadecimal ni nada con una gran cantidad de glifos para los números. Aún más, tiendo a pensar que el representante binario puede reemplazar otras notaciones para un caso general en el futuro.
Mikhail V
@MikhailV Una representación hexadecimal es MUCHO más concisa que una representación binaria. Yo diría que es una razón bastante sólida para usar una mayor cantidad de glifos que, por ejemplo, 2.
Ben Jones

Respuestas:

19

Los números octales (base-8) y hexadecimales (base-16) son un compromiso razonable entre el sistema binario (base-2) que usan las computadoras y el sistema decimal (base-10) que usan la mayoría de los humanos.

Las computadoras no son buenas para múltiples símbolos, por lo tanto, la base 2 (donde solo tiene 2 símbolos) es adecuada para ellas, mientras que las cadenas más largas, los números con más dígitos, son menos problemáticos. Los humanos son muy buenos con múltiples símbolos, pero no son tan buenos para recordar cadenas más largas.

Octal y hexadecimal utilizan la ventaja humana de que pueden trabajar con muchos símbolos, mientras que todavía es fácilmente convertible de un lado a otro entre los binarios, porque cada dígito hexadecimal representa 4 dígitos binarios ( ) y cada dígito octal representa 3 ( 8 = 2 3 ). Creo que hexadecimal gana sobre octal porque puede usarse fácilmente para representar bytes y números de 16/32/64 bits.16=248=23

dtech
fuente
8
Como ejemplo, considere los valores hexadecimales de RGB. Es fácil recordar que el blanco es #FFFFFF. Es más difícil recordar que el blanco es 16777215 en decimal. ¿Desea eliminar el componente rojo de # EF439A? Obtiene # 00439A, es decir, simplemente cambia los dos primeros dígitos a 0. En decimal, tendría que restar 15663104. Buena suerte al recordar eso.
jmite el
3
Para ser exactos, los colores en notación decimal usarían triples, y el blanco sería (255, 255, 255). Concatenamos los valores hexadecimales solo porque siempre tienen 2 dígitos. Podríamos hacer lo mismo con decimales usando 0, luego el blanco sería 255255255 en lugar de 16777215.
Spidey
@Spidey Exactamente. Además, mi cerebro puede analizar algo como (127,255,255) mucho más fácilmente e incluso puedo adivinar cómo se verá el color, ya que puedo ver la proporción de la cantidad de tinta y no tener que calcularlo en hexadecimal en mi cabeza.
Mikhail V
13

Los usamos por conveniencia y brevedad.

Hex y Oct son representaciones comprimidas realmente sobresalientes de binario. Hex en particular es muy adecuado para formas condensadas de direcciones de memoria. Cada dígito oct se asigna directamente a 3 bits binarios y cada dígito hexadecimal a 4 bits binarios. Este es el resultado de que las bases (8 y 16) son potencias de 2 ( y23 ). Por ejemplo, puedo escribir binario24 como hexadecimal 69 o si lo extiendo con un cero a la izquierda como oct 151 .0110100169151

Entonces, digamos que necesita una dirección de memoria de 64 bits. Puede mirar los 64 bits binarios o condensarlos a 16 dígitos hexadecimales. A menudo no es necesario comparar algunas direcciones para ver si son iguales o contiguas. ¿Prefieres mirar 64 bits o 16 dígitos?

Logan Mayfield
fuente
55
Octal tiene la ventaja de no agregar ningún símbolo de dígito y puede haber sido más práctico en los días de los caracteres de 6 bits (y las palabras comunes sin potencia de dos, por ejemplo, PDP-8 de 12 bits, PDP de 18 bits- 1 [registros de dirección para CDC 6x00], PDP-6 de 36 bits, registros de operando de 60 bits para CDC 6x00). El movimiento a caracteres / bytes de octeto y potencia de dos palabras hace que el hexadecimal sea más atractivo.
Paul A. Clayton
"¿Prefieres mirar 64 bits o 16 dígitos?" Ciertamente miraría los bits agrupados. Pero por supuesto no en notación "01", que es fea y me duele los ojos. Y ni siquiera digo cuánto hechizo lastima mis ojos.
Mikhail V
@MikhailV: ¿Qué quieres decir con "notación" 01 "? Usted dice que preferiría mirar los bits pero no en la "notación" 01 "", ¿qué notación usaría? Si dices que el hexadecimal lastima tus ojos, no puedo evitar pensar que podrías haber practicado un poco más en decimal que en hexadecimal. (En realidad, pensé que era sexo en solitario lo que se decía que era malo para tus ojos, pero esa es otra historia).
PJTraill
Prefiero esto a la respuesta más popular de dtech porque enfatiza la facilidad de uso, pero es posible que hayas señalado que no solo las representaciones más cortas sino también la mayor variedad de dígitos hacen que sea más fácil saber dónde estás cuando lees un número en hexadecimal o octal
PJTraill
@ PaulA.Clayton: buenos puntos; Otra ventaja en el PDP-11 era que, aunque las palabras (unidad de operaciones naturales) eran de 16 bits, la mayoría de los códigos de instrucciones caían naturalmente en una operación de 2 bits y cuatro grupos de 3 bits que representaban el número de registro y el modo de dirección, ambos tenían 8 posibilidades, de dos argumentos. Mi favorito: 014747 = MOV - (PC), - (PC), que llena la memoria consigo mismo (si está permitido).
PJTraill
5

Los números binarios en el texto son una pérdida de espacio.

25 52norte-1 , es más importante que cuánto es.

Karolis Juodelė
fuente
2

Introducción

Como ya se mencionó en otras respuestas, puede haber diferentes anotaciones para diferentes propósitos y restricciones. Las anotaciones son en realidad una codificación como una secuencia de caracteres, y por el estudio de los algoritmos y la estructura de datos sabemos que hay muchas formas de codificar conceptos abstractos, una lista o un conjunto, por ejemplo, dependiendo de lo que queramos hacer con él. . En este caso es principalmente conveniencia algorítmica.

Al considerar la representación de números, se aplica lo mismo. Dentro de la computadora, todo es binario en el nivel más bajo, aunque se pueden usar representaciones más extrañas para algunas aplicaciones.

Fuera de la computadora, usamos cualquier tipo de representación humana comprensible, dependiendo de la conveniencia humana con respecto al tipo de valor representado. La representación binaria es a menudo demasiado larga y desestructurada para ser leída y escrita fácilmente, dando lugar a hexadecimal u octal. La elección a menudo puede tener que ver con la forma en que la información está estructurada en una palabra binaria, que no necesariamente tiene la intención de representar un número.

Pero, al considerar solo los números , es decir, la representación de números, vale la pena mirar a otros sistemas de representación de números para comprender que los factores principales son: fisiología, hábito y conveniencia.La conveniencia es, por supuesto, el factor principal que crea diversidad, ya que depende del contexto de uso.

Una mirada más amplia

Es sorprendente que todas las respuestas hasta ahora consideren solo decimal y base 2norte sistemas, principalmente binarios, octales y heaxdecimales.

El cuerpo de la pregunta no parece restringido de ninguna manera a las computadoras, y los humanos han estado y todavía usan varios otros sistemas de numeración. Algunos de ellos incluso se usan dentro de las computadoras, por ejemplo cuando se trata de enteros largos (sin mencionar números no enteros ).

Una primera observación es que cuando las personas cuentan en miles o millones como una unidad, esto todavía se considera decimal, ya que estos son poderes de 10. Por lo tanto, uno podría preguntarse por qué octal o hexadecimal no debería considerarse solo una variación en binario. Una posible razón puede ser la cantidad de símbolos utilizados para representar números (aunque es un tema discutible, como veremos con otros sistemas).

Luego, con respecto a los humanos, usan varios sistemas en la base 5, llamados sistemas quinarios . En realidad, la mayoría de estos sistemas tienen dos bases, la segunda es 2 o 4, alternando con la base cinco, lo que las hace equivalentes a la base 10 (decimal) o la base 20 (vigesimal). Adivina de dónde viene eso :)

Estos sistemas de doble base se denominan sistemas bi-quinarios o cuadri-quinarios. El quinario puro rara vez se usa.

El número romano puede verse como un sistema bi-quinario (que es una indicación sobre cómo hacer aritmética con ellos). El ábaco chino y japonés utiliza bi-quinary. Quadri-quinary fue utilizado por los mayas.

Las razones para usar un sistema son probablemente muchas. Una buena razón es que fue el primer diseño local, y ahora la gente está acostumbrada. Por ejemplo, uno podría preguntarse también por qué las personas de habla inglesa todavía usan un sistema de numeración extremadamente extraño cuando intentan medir distancias. Se podría argumentar que se trata de múltiples unidades, no de numeración, pero ese es un comentario muy débil. Los números se usan principalmente para medir cosas.

Otras razones para mantener un sistema es la conveniencia en un contexto dado. Puede haber una compensación entre el número de símbolos diferentes, o las posiciones en un ábaco, y el número de símbolos necesarios para formar números suficientemente grandes. Base 2 funciona con 2 símbolos distintos, pero tiene muchas ocurrencias, lo que puede ser inconveniente para una representación material. La base vigesimal 20 requeriría veinte símbolos y tablas de multiplicar muy grandes que la gente no recordaría. Pero un sistema bi-quinary o quad-quinary es mucho más manejable, especialmente para construir ábaco. El sistema quinario puro probablemente sería aún mejor, pero va en contra de los hábitos y la intuición basados ​​en la fisiología. Y siempre es bueno poder usar nuestros dedos para contar, cuando no sabemos nada mejor.

Pero eso no es todo.

Un sistema muy antiguo y muy común es el sistema sexagesimal utilizado para medir el tiempo y los ángulos (pero sabemos que están relacionados, a través de la rotación de la Tierra). Utiliza la base 60, pero no usa 60 símbolos, ya que son demasiados. Por lo tanto, se basa en otro sistema para representar sus símbolos (como el sistema decimal).

El círculo se puede dividir en 6 partes correspondientes a ángulos de 60 grados, que son los más simples de construir con triángulos equiláteros. Luego, cada grado es de 60 minutos de arco, cada uno dividido en 60 segundos.

De acuerdo con wikipedia

Se originó con los antiguos sumerios en el tercer milenio antes de Cristo, se transmitió a los antiguos babilonios y todavía se usa, en forma modificada, para medir el tiempo, los ángulos y las coordenadas geográficas.

Teniendo en cuenta el origen, era un sistema bastante conveniente, en un momento en que las matemáticas apenas estaban entrando en la infancia. El ángulo de 60⁰ no solo es fácil de dibujar, sino que 60 tiene muchos factores, por lo que permitió dividir de muchas maneras con enteros, sin dejar resto.

Fisiológicamente, puede relacionarse con un sistema duodecimal-quinario, base 12 y 5. La base 12 es conveniente ya que se puede usar cuando se cuenta con huesos de 4 dedos con el pulgar de la misma mano. Luego, los dedos de la otra mano dan el componente quinario. Y12×5 5=60 60.

Pero hay otras formas de llegar a los 60, como el sistema vigesimal-ternario de los babilonios .

¿Por qué todavía usamos el sistema sexagesimal? Supongo que estamos acostumbrados, y es posible que tengamos demasiados problemas conflictivos para que un cambio esté completamente justificado.

Es interesante notar que hay mucha interacción entre los sistemas de numeración y los sistemas de unidades. Pero esto es de esperarse ya que la medida es un papel importante para los números. Esto se nota en la oposición entre las métricas decimales y binarias para el tamaño de la memoria .

babou
fuente
3
Eso podría ser porque el título dice "¿Por qué hexadecimal, octal o hexadecimal?"
Fizz
1
@RespawnedFluff Buen comentario. Entonces mi cuestionamiento puede extenderse a la pregunta. No quise decir que otras respuestas no son interesantes. Pero una visión más amplia muestra mejor las posibles motivaciones para una variedad de sistemas. Es compatible con algunas de las respuestas ya dadas. Básicamente, las motivaciones son hábito y conveniencia. Pero la conveniencia depende mucho del contexto. La dicotomía del tamaño de la memoria es de reciente creación y ilustra el punto.
babou
2
La brevedad es una virtud, esta pregunta no requiere una prosa de 1000 palabras, ni es muy relevante. Tampoco has respondido la pregunta.
dtech
"cuando las personas cuentan en miles, ..., esto todavía se considera decimal, porque estos son poderes de 10. Entonces uno podría preguntarse por qué octal o hexadecimal no debería considerarse solo una variación en binario". Porque miles son solo la omisión de dígitos, generalmente 0's. Esto es diferente de base-1000 que usaría 1000 símbolos diferentes para cada número 0-999.
dtech
1
@dtech Gracias. Había olvidado la introducción o el resumen que generalmente tengo delante de mis respuestas. Y esto me llevó a un punto importante aparentemente ignorado por otras respuestas. No todas las palabras binarias tienen la intención de ser un número. Intentar obtener una visión más amplia es lo que ayuda a encontrar problemas.
babou
-1

Las computadoras entienden los números binarios y en binario, los pesos del número están en potencia de 2, por lo tanto, el número de dígitos para representar un número puede ser grande dependiendo del número.

Digamos que 64 en decimal puede representarse con 7 bits, mientras que para representar el número 5000 necesitamos 13 bits.

Los sistemas de números octales y hexadecimales son una forma compacta de representar un número binario.

Mayank Kumar Gupta
fuente
2
¿Cómo responde esto [What advantage is there to using a base different from ten or (a power of) two?], o de qué otra manera interpretas Why not stick to [bases 2 and 10]??
barba gris el