La diferencia entre firmado y sin firmar en lenguaje C
Con signo significa firmado, el primer bit indica positivo y negativo, y los bits restantes indican tamaño. Por ejemplo, el rango de tamaño de signint es -128 ~ 127.
Sin firmar significa sin firmar, todos los bits tienen tamaño y no hay signo. Por ejemplo, el rango de tamaño de unsignedint es 0~127.
2. Diferentes tipos
Los enteros de tipo con signo se codifican solo eliminando el bit más alto y los 15 bits restantes, y el bit más alto solo se usa como signo para marcar el positivo o negativo del número entero, 0 significa Positivo, 1 significa negativo. Por lo tanto, para enteros con signo, el rango de almacenamiento es (-2 15to2 15-1), es decir, enteros de -32768 a +32767.
Para los enteros sin signo, se utilizan los 16 bits para la codificación y el rango de almacenamiento es (0to2 16-1), que es un entero no negativo de 0 a 65535. Entonces puedes declarar inta=1 o inta=-1, pero no puedes declarar unsigna=-1. Pero debe mencionarse que no importa si el tipo de entero tiene o no signo, se almacena en 16 bits, lo que significa que los 16 bits se utilizan para almacenar datos.
3. Los valores expresados son diferentes.
Los números enteros de tipo con signo se codifican solo eliminando los 15 restantes. El bit más alto se usa para marcar el signo del número entero, 0 significa positivo y 1 significa negativo. Por lo tanto, el rango de almacenamiento de enteros con signo es (-2 · 15 ~ 2 · 15-1).
Si se utilizan los 16 enteros sin signo para la codificación, el rango de almacenamiento del entero sin signo es (0 ~ 2 16-1).