Red de conocimiento de recetas - Recetas gastronómicas - 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?

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?

Esto implica el conocimiento de los complementos. Primero déjame escribirte una conclusión: el complemento de un número positivo es su propia representación binaria. El complemento de un número negativo = el complemento a dos de un número positivo 1 (el complemento es la inversión de todos los bits en binario). Se estipula que el primer bit no representa el bit de signo del valor, 0 es positivo y 1 es negativo.

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