Comencemos nuestra discusión con unas pocas líneas de C :
C
#include <stdio.h> int main() { int x = 97; char ch = x; printf("The value of %d in character form is '%c'",x, ch); return 0; }
Producción :
The value of 97 in character form is 'a'
Entendamos cómo el compilador va a compilar cada instrucción en este programa.
compilador:
- Entra en el programa principal
- Asignó 4 bytes de memoria (como un entero generalmente toma 4 bytes), lo nombró como x y le da un valor de 97
- Asignó 1 byte de memoria (ya que un carácter ocupa 1 byte de espacio), lo nombró como ch y almacenó el valor correspondiente a x en él
- Impreso el valor de ch
- Sale del programa principal
Comprenderemos los puntos 2 y 3 a fondo, ya que todos los demás son obvios.
Descripción del segundo punto:
El compilador convertirá 97 (en decimal) a su forma binaria correspondiente ya que la memoria almacena los datos en forma binaria . 00000000 00000000 00000000 01100001 es la representación binaria de 97 en representación binaria de 4 bytes (o 32 bits). Entonces, el contenido de la variable x se verá como en la imagen dada:
Este sistema de representación de los datos en forma binaria en la memoria se conoce como Big Endian . Pero en la mayoría de los sistemas informáticos a pesar de este sistema, se sigue el sistema Little Endian . Entonces, en el sistema Little Endian, el contenido de x es el siguiente:
Entonces, en la mayoría de las computadoras, todos los datos en la memoria se almacenarán solo en forma Little-Endian.
Descripción del segundo punto:
Como se dijo anteriormente, el carácter ocupa 1 byte u 8 bits de espacio en la memoria, por lo que el compilador lo asignará, pero cuando se trata de asignar el valor a la variable ch , irá a la ubicación donde x está presente y comenzará a leer el contenido. de solo el primer byte ya que está leyendo para un carácter. Entonces, el primer byte tiene 0110 0001 en forma binaria y su forma decimal correspondiente es 97. Cada carácter tiene un código ASCII asociado y el código ASCII para el carácter a es 97. Es por eso que el contenido de ch se convertirá en a y después eso, el compilador simplemente imprimirá el contenido de ch.
Algunos ejemplos más para una mejor comprensión:
C
#include <stdio.h> int main() { int x = 321; //can be written as 256+65 char ch = x; printf("The character form of %d is '%c'",x,ch); return 0; }
Producción :
The character form of 321 is 'A'
Explicación :
La representación binaria de 321 es 00000000 00000000 00000001 01000001 y el contenido de x en el sistema Little Endian es 0100001 00000001 00000000 00000000 simplemente haga 1234 ⇢ 4321 (ver imagen) obtenga este formulario. Ahora el compilador solo mira el primer byte que es 0100001 y su forma decimal correspondiente es 65 que es el código ASCII para el carácter ‘a’ .
C
#include <stdio.h> int main() { int x = 57; char ch = x; printf("The character form of %d is '%c'",x,ch); return 0; }
Producción :
The character form of 57 is '9'
Explicación :
La representación binaria de 57 es 00000000 00000000 00000000 00111001 y el contenido de x en el sistema Little Endian es 00111001 00000000 00000000 00000000 Ahora el compilador solo mira el primer byte que es 00111001 y su código decimal correspondiente es 57 para el cual es el carácter ‘9’.
Agradable tener :
- El código ASCII para AZ es 65-90, az es 97-122 y los dígitos del 0 al 9 también tienen su código ASCII correspondiente del 48 al 57.
- Para encontrar la forma de carácter correspondiente, simplemente encuentre el módulo de ese número con 256 y luego busque en la tabla ASCII y encuentre el carácter correspondiente al resto. Esa será tu respuesta.
GRACIAS ^_^
Publicación traducida automáticamente
Artículo escrito por abhishek005 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA