Encuentro varias fuentes que afirman que la potencia de dos bits en una palabra binaria (como 8 bits por byte) es "buena" o "conveniente". No encuentro ninguna fuente que indique por qué.
De Cuál es la historia de por qué bytes son ocho bits? leemos en la respuesta aprobada:
Las computadoras binarias motivan a los diseñadores a hacer potencias de dos tamaños.
¿Está bien, pero por qué? En la misma pregunta pero en el campo de comentarios para la pregunta, encuentro:
¿Es la última oración en broma? Un byte de 12 bits sería inconveniente porque no es una potencia de 2. - robjb
Nuevamente, sin fundamento ...
los cálculos de direcciones son mucho más simples con potencias de 2, y eso cuenta cuando estás haciendo lógica con transistores sin procesar en pequeñas latas - Mike
Como los bytes son la unidad direccionable más pequeña, esto no tiene mucho sentido. Sin embargo, hay muchos votos a favor en el comentario. Tal vez me perdí algo.
De Wikipedia :
El estándar de facto de ocho bits es una potencia conveniente de dos que permite los valores de 0 a 255 para un byte
¿Y esto sería conveniente porque ...?
Para aclarar, se trata del número de bits por byte (por ejemplo, 8 o 6, etc.), no del número de valores por byte (por ejemplo, 2 8 o 2 6 , etc.). Debido a la confusión, también señalo que no se trata de tamaños de palabras.
No estoy demasiado interesado en razones históricas. Esos han sido bien explicados en otros lugares (ver enlaces).
Pregunta relacionada sobre SO: /programming/1606827/why-is-number-of-bits-always-a-power-of-two
Respuestas:
No creo que los bytes de 8 bits hayan tenido éxito porque tienen un ancho que es una potencia de dos. Si no desea abordar bits individualmente, y esa es una característica común ni ahora ni en el pasado, tener un poder de dos no tiene una importancia práctica real (es solo que ahora es mucho más que en el pasado cuando se ahorra algunos componentes discretos eran importantes: un reflejo para los ingenieros de hardware y software y permanecer en un terreno familiar es importante para otros fines), y no recuerdo haberlo mencionado en mi historial de lecturas informáticas (1). Se necesitaban minúsculas, eso significaba algo más que los juegos de caracteres dominantes de 6 bits. El ASCII era de 7 bits, pero el ASCII era puramente para el intercambio (y por lo tanto se traduciría al código interno para su manejo), y por lo tanto
y para el hardware, el byte de 8 bits ganó porque permitió empaquetar 2 dígitos decimales en un byte en un momento en que el 75% de los datos era numérico y estaba representado en BCD (3).
(1) por ejemplo Blaauw y Brooks, Computer Architecture ; MacKenzie, Conjuntos de caracteres codificados, Historia y Desarrollo tienen una discusión sobre ese tema.
(3) Documento de X3.2 - el Subcomité responsable de ASCII - citado por MacKenzie.
(3) MacKenzie, otra vez.
fuente
Aparte del accidente histórico, no hay una razón particular por la que debamos usar 8/16/32/64 bits. Supongo que 12/24/48/96 bit realmente sería más útil.
Para manejar texto, Unicode usando un hipotético UTF-24 sería más barato que UTF32; el hipotético UTF-12 almacenaría todos los caracteres UTF-8 de byte único y doble en 12 bits, y todos los caracteres UTF-8 de triple y cuádruple byte en 24 bits (el rango se reduciría ligeramente a 2 ^ 20 caracteres, pero eso es todavía cuatro veces más de lo que se usa generosamente); el código sería más simple porque solo hay dos variantes.
Para coma flotante, 48 bits suele ser suficiente. 96 bit es sustancialmente mejor que 80 bit extendido. 24 bits es útil para gráficos; mucho más útil que el 16 bit soportado por algunas tarjetas gráficas. Los punteros de 48 bits pueden manejar 256 terabytes.
La única desventaja son las matrices de bits, donde se necesita una división por 12 para calcular las posiciones de los bytes. Si eso se considera importante, estoy seguro de que la división por 12 se puede implementar de manera bastante eficiente en el hardware.
fuente
Esto es conveniente debido a las arquitecturas de hardware comunes que utilizan múltiplos de 8, por ejemplo, arquitecturas de 32 bits y 64 bits. Esto significa una mayor eficiencia cuando se utiliza el almacenamiento y la transmisión de datos de 8 bits.
"Sin embargo, las consideraciones de economía en el diseño impulsan fuertemente un tamaño, o unos pocos tamaños relacionados por múltiplos o fracciones (submúltiplos) a un tamaño primario. Ese tamaño preferido se convierte en el tamaño de la palabra de la arquitectura".
Word (arquitectura de computadora)
Ver también: ¿Cuál es el historial de por qué los bytes son ocho bits?
fuente
2⁸-1
.Según el artículo de Wikipedia para Word , esto hace que los cálculos relacionados con la memoria de direccionamiento sean significativamente más fáciles:
fuente
Está estrechamente relacionado con el espacio de direcciones. Al agregar un poco más a su bus de direcciones, puede direccionar el doble de ubicaciones de memoria. Entonces, cuando agrega esa línea adicional, también podría usarla en toda su extensión.
Esto conduce a una progresión natural de 1, 2, 4, 8, 16, 32, etc.
A nivel técnico de producción, también es fácil repetir el mismo patrón litográfico. Es decir, duplicarlo. Si comienza con un pestillo y luego duplica el patrón, pasará 8, no 6, 10 o 12.
fuente
No siempre son los anchos de palabra una potencia de dos. Recientemente he estado haciendo algo de codificación en un DSP SHArC que tiene un ancho de palabra de 32 bits para los números, pero no para los códigos de operación (que tienen 48 bits de ancho).
Probablemente, la razón por la cual los anchos de palabra son una potencia de dos es debido a algunas instrucciones que prueban (o establecen o borran o alternan) un solo bit o cambian (o rotan) hacia la izquierda o hacia la derecha en un número específico de bits. Hay un campo de bits en el código de operación para especificar la ubicación del bit único o el número de bits a cambiar. Si el ancho de la palabra es una potencia de dos, este campo de bit requiere bits de registro 2 (word_width) para cubrir la palabra completa. Es decir, una palabra que tiene 32 bits de ancho necesita un campo de 5 bits en el código de operación para estas operaciones. Si la palabra tenía 33 bits de ancho, necesitaría 6, de lo contrario no podría cubrir la palabra completa, pero ese también sería el caso si la palabra tuviera 64 bits de ancho.
Los bits en un código de operación son extremadamente valiosos, por lo que generalmente no quieren desperdiciarlos. Entonces tiene sentido hacer que la palabra tenga una potencia de 2 de ancho.
La razón por la que los bytes tienen 8 bits de ancho es que es la potencia más pequeña de dos que puede contener un carácter ASCII (que es de 7 bits).
fuente