Red de conocimientos sobre prescripción popular - Colección de remedios caseros - 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.

Convierta a tipo byte y representelo 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.

Es por esto que el valor del tipo de byte está entre -128~127. Lo mismo ocurre con los siguientes métodos, 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.