Red de conocimientos sobre prescripción popular - Colección de remedios caseros - La diferencia entre firmado y sin firmar en lenguaje C

La diferencia entre firmado y sin firmar en lenguaje C

1. Indica diferentes rangos numéricos

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).