Fundamento
- El lenguaje C proporciona la cantidad de bits de un byte como algo definido por la implementación mediante la macro
CHAR_BIT, y C++ adopta esto tal cual
- El hardware moderno en su mayoría ha convergido en la suposición de que un byte tiene 8 bits
- Este documento propone especificar oficialmente en C++ que un byte tiene 8 bits
- Los compiladores principales ya admiten bytes de 8 bits
- GCC establece el valor predeterminado en 8
- LLVM establece
__CHAR_BIT__ en 8
- MSVC define
CHAR_BIT como 8
- POSIX exige bytes de 8 bits desde 2001
- El software que no admite bytes de 8 bits no es compatible
Impacto en C
- Esta propuesta explora si C++ sigue siendo relevante para arquitecturas que usan bytes que no son de 8 bits
- El comité del lenguaje C puede llegar a una conclusión diferente, y sería ideal que ambos comités coincidan
Lenguaje
- En el modelo de memoria de C++, la unidad básica de almacenamiento es el byte, y un byte está compuesto por 8 bits
- La macro
CHAR_BIT se informa en el encabezado climits
Biblioteca
- El encabezado
climits define todas las macros igual que el encabezado de la biblioteca estándar de C limits.h
- El encabezado
cstdint proporciona tipos enteros de ancho especificado y macros que especifican los límites de los tipos enteros
- Todos los tipos y macros dejan de ser opcionales solo cuando el byte tiene 8 bits
Resumen de GN⁺
- Este documento es una propuesta para especificar oficialmente en C++ que un byte tiene 8 bits
- La mayoría del hardware moderno y las plataformas de software usan bytes de 8 bits, por lo que es razonable estandarizarlo
- Las arquitecturas con bytes que no son de 8 bits no son compatibles con el C++ moderno, y la importancia de estas arquitecturas está disminuyendo
- Esta propuesta reduce la complejidad de C++ y ayuda a que los nuevos programadores entiendan el lenguaje más fácilmente
- Un proyecto similar con funcionalidad comparable es el estándar POSIX
1 comentarios
Opinión de Hacker News
Hubo una mención a "Signed Integers are Two’s Complement" en la serie de JF "Can we acknowledge that every real computer works this way?"
El lenguaje D representó un gran avance en los siguientes aspectos
Algunas personas todavía trabajan con DSP
En lo personal, le divierte documentar una consola de fantasía de 12 bits que "ofrece 50% más bits por byte que la competencia"
Hubo una pregunta sobre qué cosas podría deprecar o simplificar C++
Tiene sentimientos encontrados sobre que no haya un uso significativo para que CHAR_BIT tenga un valor distinto de 8
Agradece el interés en la propuesta y, con base en la retroalimentación, redactó un borrador actualizado
Le gusta la idea de una microcomputadora retro con bytes de 6 bits
Está de acuerdo con forzar
int8_t == char == 8 bits, pero no está convencido de difundir la idea equivocada de que un byte tiene 8 bits