Determine cómo agregar dos valores int para ver si no hay desbordamiento
Como estudiante de informática, la conversión mutua de números primos, números inversos y números complementarios debe quedar muy clara. El rango de números enteros es -2^31 ~ 2^31-1, es decir, [-2147483648,2147483647]. Dejaré la pregunta aquí por ahora y la explicaré más tarde.
Pensamos de nuevo en el cero.
Binario: 0000 0000 0000 0000 0000 0000 0000
Binario: 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000
Pero la computadora calcula en complemento a dos. Para cero, el complemento de cero positivo es el propio cero, y el complemento de cero negativo es la fuente de cero, excepto que el bit de signo permanece sin cambios. El complemento del cero negativo es 0, que es lo mismo que el cero positivo, por lo que no es necesario distinguir entre cero positivo y negativo. El valor de 0000 0000 0000 0000 0000 es -2147483648
Entonces
(-2147483648)+(-1) =
2147483647+1 = ?
Si escribes un programa, puedes ver que son iguales a 2147483647, -2147483648. Puedes ver que si sumas dos números positivos, el bit de signo cambia si se desborda; si sumas dos números negativos, el bit de signo cambia si se desborda;
Por lo tanto, al juzgar la suma de dos valores int, si hay desbordamiento, entonces el valor que calcularon no coincide con el valor que realmente calculamos. La razón es que las operaciones numéricas de la computadora sobre valores int se desbordarán si exceden el rango de valores int.
Espero que este blog pueda ser útil para personas como yo que no lo entienden del todo==