Red de conocimientos sobre prescripción popular - Cuidado de la salud en otoño - Problema de desbordamiento de enteros, explicado en detalle.

Problema de desbordamiento de enteros, explicado en detalle.

Bueno, los enteros de tipo int están representados por 4 bytes (en máquinas generales, el número de bytes en diferentes máquinas es diferente), es decir, 4 * 8 = binario de 32 bits, 2 ^ 32 = 4 ^ 294 ^ 967 ^ 296, Además, es decir, puede representar hasta 4^294^967^296 enteros, lo que significa que hay 4^294^967^296/2-1. En resumen, si un número entero está representado por un binario de n bits, entonces hay (2 (n-1)) -1 números positivos, 2 (n-1) números negativos y un 0.

Su máquina parece usar 16 bits (2 bytes) para representar números enteros (tipo int). Entonces, el número positivo más grande es 32767 y el número binario correspondiente es 0111111165438+. Si suma 1, se convierte en 100000000000, que es la forma complementaria de -32768.