¿Cuál es la operación del operador ‘~’ en C? Si a = ~ 5, luego de la ejecución, ¿cómo muestra a = -6?

Recuerde que los números negativos se almacenan como el complemento de dos de la contraparte positiva. Como ejemplo, aquí está la representación de -2 en el complemento a dos: (8 bits)

1111 1110

La forma de obtener esto es tomando la representación binaria de un número, tomando su complemento (invirtiendo todos los bits) y agregando uno. Dos comienza como 0000 0010, e invirtiendo los bits obtenemos 1111 1101. Al agregar uno, obtenemos el resultado anterior. El primer bit es el bit de signo, lo que implica un negativo.

Así que echemos un vistazo a cómo obtenemos ~ 2 = -3:

Aquí hay dos de nuevo:

0000 0010

Simplemente voltea todos los bits y obtenemos:

1111 1101

Bueno, ¿cómo se ve -3 en el complemento de dos? Comience con 3: 0000 0011 positivo, voltee todos los bits a 1111 1100 y agregue uno para que sea un valor negativo (-3), 1111 1101.

Entonces, si simplemente invierte los bits en 2, obtendrá la representación del complemento de dos de -3.

El operador del complemento (~) SOLO FLIPS BITS. Depende de la máquina interpretar estos bits.

“~” Es un operador de complemento bit a bit unario, que cambia de 0 a 1 y de 1 a 0.

int a = 4;

System.out.println (~ a);

El resultado sería: 5

‘~’ de cualquier número entero en java representa el complemento de 1 del no. por ejemplo, estoy tomando ~ 4, lo que significa en representación binaria 0100. primero, la longitud de un entero es de cuatro bytes, es decir, 4 * 8 (8 bits para 1 byte) = 32. Entonces, en la memoria del sistema 4 se representa como 0000 0000 0000 0000 0000 0000 0000 0100 ahora ~ el operador realizará el complemento de 1 en el binario anterior no

es decir, 1111 1111 1111 1111 1111 1111 1111 1011-> complemento de 1, el bit más significativo representa el signo del no (ya sea – o +) si es 1, entonces el signo es ‘-‘ si es 0, entonces el signo es ‘+’ según este nuestro resultado es un número negativo, en java los números negativos se almacenan en forma de complemento de 2, el resultado adquirido tenemos que convertirlo en complemento de 2 (primero realice el complemento de 1 y simplemente agregue el complemento de 1 a 1). todos se convertirán en ceros, excepto el bit 1 más significativo (que es nuestra representación de signo del número, que significa para los 31 bits restantes 1111 1111 1111 1111 1111 1111 1111 1011 (resultado adquirido del operador ~) 1000 0000 0000 0000 0000 0000 0000 0100 (complemento de 1)

1 (complemento de 2)

1000 0000 0000 0000 0000 0000 0000 0101 ahora el resultado es -5 mira este enlace para el video <[Operadores sabios en Java] https://youtu.be/w4pJ4cGWe9Y

compruebe esto: ¿Cómo funciona el operador de complemento bit a bit (~)?

‘~’ es el operador de complemento bit a bit. Invierte los bits de la representación binaria de un número.

Los números negativos se almacenan como complemento de 2

Representación binaria de 5 = 0000 0101

~ 5 = voltear los dígitos en 5 = 1111 1010

Ahora veamos la representación binaria de – 6

Representación binaria de 6 = 0000 0110

Complemento de 6 = 1111 1001 (invierta los bits en representación binaria de 6)

Complemento de dos de 6 = sumar 1 a su complemento de 1 = 1111 1010

Esto es igual a ~ 5

Por lo tanto, el complemento bit a bit de 5 es – 6.