Bueno, antes que nada, una computadora sabe si declaras un int firmado o no firmado en tiempo de compilación. Un compilador obtiene su código y lo convierte en código de máquina.
En el caso de Java, el compilador convierte el código en archivos .class, que luego son ejecutados por JVM (Java Virtual Machine)
En cuanto a su valor, usando números con signo, faltan algunas cosas.
Por ejemplo, usando el estándar IEEE, siempre tiene un número negativo más que los positivos.
Tomemos un ejemplo, con solo 3 bits y dos complementarios:
Binario / sin signo / firmado
011/3/3
010/2/2
001/1/1
000/0/0
111/7 / -1
110/6 / -2
101/5 / -3
100/4 / -4
- Quiero morirme. ¿Cómo debería morir?
- Yo vivo en jaipur ¿Cómo puedo limpiar las calles de mi colonia?
- Soy un indio que viaja a los Estados Unidos para estudiar. ¿Puedo comprar legalmente en dólares estadounidenses a mis amigos / familiares en los Estados Unidos?
- Estoy dividido entre la seguridad informática y el análisis de programas. ¿Cómo decido en qué especialización puedo hacer mi doctorado?
- Mi rango avanzado de JEE es 1402. ¿Qué es mejor: IIT KGP MNC (MSc), IIT Indore, CSE o Guwahati MNC?
Como puede ver, el número más bajo es -4 y el más alto es 3
2 ^ 3 es 8, pero en binario, 8 es 1000, lo que requiere 4 bits para representar, por lo tanto, lo más alto que podemos representar con 3 bits es 111, que es 7, que es 2 ^ 3 – 1
Más detalles: como puede ver, si tiene, como en nuestro caso, 3 en un entero con signo y suma uno, obtendrá
011 + 1
Lo que da 100, que es -4. Esto se llama desbordamiento y tiende a suceder mucho si no tiene cuidado con los valores que ingresa.
De la misma manera, si tienes -4 y quitas 1, tienes:
100-1 = 011
Cuál es 3. Este es un flujo inferior.
Para cualquier otra pregunta, no dude en comentar!