Dependiendo de cómo funcione el sistema operativo específico, generalmente espera que la memoria se asigne sin optimizar, de modo que cuando solicita un byte, una palabra u otro tipo de datos pequeños, el valor ocupa un registro completo, todo es muy propio. Sin embargo, cómo funciona su compilador o intérprete para interpretar esto es otra cosa, por lo que si compilara un programa en C #, por ejemplo, el valor podría ocupar físicamente un registro para sí mismo, sin embargo, el valor se verificará en el límite para asegurarse de que no intente almacenar un valor que exceda los límites del tipo de datos deseado.
En cuanto al rendimiento, y si es realmente pedante con respecto a estas cosas, es probable que sea más rápido simplemente usar el tipo de datos que más se aproxime al tamaño del registro objetivo, pero luego se pierde todo ese encantador azúcar sintáctico que hace que trabajar con variables sea tan fácil .
Cómo te ayuda esto? Bueno, realmente depende de ti decidir qué tipo de situación estás codificando. Para casi todos los programas que he escrito, es suficiente simplemente confiar en su compilador para optimizar las cosas y usar el tipo de datos que sea más útil para usted. Si necesita alta precisión, use los tipos de datos de punto flotante más grandes. Si trabaja solo con valores positivos, probablemente pueda usar un entero sin signo, pero en su mayor parte, simplemente usar el tipo de datos int es suficiente.
Sin embargo, si tiene algunos requisitos de datos muy estrictos, como escribir un protocolo de comunicaciones o algún tipo de algoritmo de cifrado, el uso de tipos de datos con control de rango puede ser muy útil, especialmente si está tratando de evitar problemas relacionados con desbordamientos / subestimaciones de datos o valores de datos no válidos.
La única otra razón por la que puedo pensar fuera de mi cabeza para usar tipos de datos específicos es cuando estás tratando de comunicar la intención dentro de tu código. Si usa una abreviatura, por ejemplo, le está diciendo a otros desarrolladores que está permitiendo números positivos y negativos dentro de un rango de valores muy pequeño.