Con respecto a la operación de conversión de tipos en Java, ¿por qué un tipo int 128 se convierte en -128 cuando se convierte en un tipo byte?
¿De qué sirve hablar tanto? ¡Sí! Los números enteros se almacenan en las computadoras en forma de complemento a dos.
Bien, ahora que tenemos la base, echemos un vistazo a este problema. Int tipo 128, no hay problema, el límite de almacenamiento de int es mucho mayor que 128. Al convertir a tipo byte, surge el problema. Echemos un vistazo a la representación binaria del int tipo 128: 0000-0000-0000-0000-1000-0000, que es su complemento.
Convertido a tipo byte y expresado como:
1000-0000
¡Descubriremos que el primer bit aquí debe estar representado por un valor! Desafortunadamente, las computadoras no reconocen automáticamente los valores esperados al modelar. 1000-0000 es un número complementario en las computadoras en lugar de una serie de números binarios positivos. A su vez obtenemos 0111-111, que es el valor máximo de tipo de byte de 127. Agregue uno para obtener 128, y el primero es 1.
Esta es la razón por la que el valor del tipo de byte está entre -128~127. Los siguientes métodos son los mismos, por lo que no entraré en detalles.
Por supuesto, el conocimiento de los complementos no se limita a esto. Si está interesado, puede encontrar información relevante en línea.