Las variables enteras y de caracteres se usan con tanta frecuencia en los programas, pero pocos saben cómo se almacenan estos valores en C.
A continuación se muestran algunos ejemplos para entender esto:
- Tomando un valor entero positivo como char:
#include <stdio.h>
int
main()
{
char
a = 278;
printf
(
"%d"
, a);
return
0;
}
Producción:22
Explicación: Primero, el compilador convierte 278 del sistema numérico decimal al sistema numérico binario (100010110) internamente y luego toma en consideración solo los primeros 8 bits desde la derecha de ese número representado en binario y almacena este valor en la variable a. También dará una advertencia de desbordamiento .
- Tomando un valor entero negativo como carácter:
#include <stdio.h>
int
main()
{
char
a = -129;
printf
(
"%d"
, a);
return
0;
}
Producción:127
Explicación: En primer lugar, debe entenderse que los números negativos se almacenan en forma de complemento a 2 de su contraparte positiva. El compilador convierte 129 del sistema numérico decimal al sistema numérico binario (10000001) internamente, y luego, todos los ceros se cambiarían a uno y uno a ceros (es decir, hacer el complemento de uno) (01111110) y uno se agregaría al complemento de uno a través de la suma binaria para dar el complemento a dos de ese número (01111111). Ahora, los 8 bits más a la derecha del complemento a dos se tomarían y almacenarían tal como están en la variable a. También dará una advertencia de desbordamiento .
Nota: El mismo concepto se usa para almacenar las variables enteras con la diferencia de que el número de bits tomados al final es 16 (2 bytes) o 32 (4 bytes) bits porque el tamaño de las variables int es 2 o 4 bytes.
Publicación traducida automáticamente
Artículo escrito por ShivankKapoor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA