Cómo calcular ~5 en Java
import?java.io.*;
¿clase?pública?Test
{ p>
public?args)
{ int?a=5; System.out.println(~a); /p>
dtya@zzu:~$?javac?Test.java?
dtya@zzu:~$?java?Test?
-6
Representación complementaria de 32 bits del tipo int en JAVA, complemento a 5:
0000 0000 0000 0000 0000 0000 ?0000 0101
El primer 0 representa un número entero
Inversa:
1111 1111 1111 1111 ?1111 111 ?1111 1010
El primer 1 representa un número negativo, y su valor es el recíproco de los últimos 31 números más 1 .
Primero toma el recíproco:
000 ?0000?0000 0000 0000 ?0101
Luego suma 1:
000 ?0000? 0000 0000 0000 ?0110 (6)
Por lo tanto: ~5=6
Apéndice:
Conocimientos complementarios:
Símbolos en computadoras Hay tres formas de representar números: código original, código inverso y código complementario. Estas tres representaciones tienen dos partes: bit de signo y bit numérico. El bit de signo es 0 para "positivo", 1 para "negativo" y el bit numérico, las tres representaciones son diferentes.
En los sistemas informáticos los valores numéricos siempre se representan y almacenan mediante códigos complementarios. Debido al uso de códigos de complemento, los bits de signo y los campos numéricos se pueden procesar de manera uniforme al mismo tiempo, y la suma y la resta también se pueden procesar de manera uniforme. Además, la conversión entre el código complementario y el código original utiliza el mismo proceso operativo y no requiere circuitos de hardware adicionales.
Enteros positivos
El complemento de un entero positivo es el mismo que el del código original.
El código de complemento de 9 en el ejemplo 1 es 00001001. (Nota: este complemento a 9 está representado por un binario de 8 bits. Hay muchas formas de representar el complemento, incluida la representación en complemento a dos de 16 bits, la representación en complemento a dos de 32 bits y la representación en complemento hexadecimal de 64 bits. Cada complemento puede sólo representan un número limitado de bits).
Números negativos
Para encontrar el complemento de un entero negativo, el signo del código original permanece sin cambios, se resta 1 del código original y se invierte el último dígito. (Sin embargo, debido a las peculiaridades del binario, es común invertir cada número y luego sumar 1 al entero).
El mismo número es diferente en diferentes representaciones en complemento a dos. Por ejemplo, el complemento de -15 es 11110001 en binario de 8 bits y 1111111111110001 en complemento a dos de 16 bits.
Ejemplo 2 Encuentra el complemento de -5.
Debido a que el número dado es negativo, el bit de signo es "1".
Los últimos siete dígitos: el código original de -5 (10000101) → el bit de signo permanece sin cambios (10000101) → el bit de dígito se invierte (11111010) → más 1 (11111011)
Entonces: el complemento de 5 es 11111011.
Ejemplo 3 La representación en complemento del número 0 es única.
[ 0] Código complemento = [ 0] Código inverso = [ 0] Código original = 0000000000
[ -0] Código complemento = 11111111 1 = 0000000000
Convertir al código original
Si se conoce el complemento de un número, la operación de encontrar el código original es en realidad volver a encontrar el complemento del complemento:
(1) Si el complemento El bit de signo es "0", es decir, es un número positivo, entonces su código original es el código de complemento.
(2) Si el bit de signo del complemento es "1", lo que significa que es un número negativo, entonces el complemento del complemento dado es el código original requerido.
Ejemplo 4 Si se sabe que el complemento es 11111001, el código original es 10000111 (-7).
Dado que el bit de signo es "1", lo que indica un número negativo, este bit permanece "1".
Invierta los 7 bits restantes de 1111001 en 0000110;
Luego agregue 1, por lo que 10000111.
El valor absoluto del código del complemento
(llamado valor verdadero)
El código del complemento del ejemplo 5-65 es 10111111
Si convierte directamente 10111111 a decimal.
De hecho, en los ordenadores, si es un número binario y su bit más a la izquierda es 1, podemos determinar que es un número negativo y utilizar su complemento para representarlo.
Para obtener el valor verdadero de un complemento a dos negativo, simplemente invierte todos los complementos y suma 1 para obtener el valor verdadero.
Ejemplo: Valor binario: 10111111 (complemento a -65)
Invertir cada número: 01000000
Suma 1: 01000001 (65)
p>