Requisito previo:
Operadores bit a bit en C/ C++
Operadores bit a bit en Java
El operador de complemento bit a bit es un operador unario (funciona en un solo operando). Toma un número e invierte todos sus bits. Cuando se aplica el operador bit a bit en los bits, todos los 1 se convierten en 0 y viceversa. El operador para el complemento bit a bit es ~ (Tilde).
Ejemplo:
Entrada: ~ 0000 0011
Salida: 1111 1100Entrada: 1110 0111
Salida: 0001 1000
El operador de complemento bit a bit debe usarse con cuidado. El resultado del operador ~ en un número pequeño puede ser un número grande si el resultado se almacena en una variable sin signo. Y el resultado puede ser un número negativo si el resultado se almacena en una variable con signo (suponiendo que los números negativos se almacenan en forma de complemento a 2, donde el bit más a la izquierda es el bit de signo).
Entrada:
n = 2
Forma binaria de 2 = 0010
Operación de complemento bit a bit en 2 = ~ 0010
= 1101
1101 es equivalente al valor decimal 13.Salida esperada: 13
Salida correcta: -3El compilador devuelve el complemento a 2 del valor de entrada.
C
// C program to implement // the above approach #include <stdio.h> // Driver code int main() { int n = 2; printf("Bitwise complement of %d : %d", n, ~n); return 0; }
C++
// C++ program to implement // the above approach #include <iostream> using namespace std; // Driver code int main() { int a = 2; cout << "Bitwise complement of " << a << " : " << ~a; }
Java
// Java program to implement // the above approach import java.io.*; // Driver code class GFG { public static void main (String[] args) { int a = 2; System.out.println("Bitwise complement of " + a + " : " + ~a); } }
Python3
# Python3 program to implement # the above approach # Driver code n = 2 print("Bitwise complement of {n} :", ~n)
C#
// C# program to implement // the above approach using System; class GFG{ static public void Main() { int a = 2; Console.WriteLine("Bitwise complement of " + a + " : " + ~a); } }
Javascript
<script> // JavaScript program to implement // the above approach // Driver code let a = 2; document.write("Bitwise complement of " + a + " : " + ~a); // This code is contributed by Potta Lokesh </script>
Producción:
Complemento bit a bit de 2 : -3
Explicación:
el complemento bit a bit de 2 (~2) es -3 en lugar de 13, pero ¿por qué?
Cuando los números se imprimen en base 10, el resultado de una operación NOT puede ser sorprendente. En particular, los números positivos pueden convertirse en negativos y viceversa.
Primero encontremos la representación binaria del complemento bit a bit de 2 que es -3
Los números negativos se almacenan como complemento a dos de la contraparte positiva.
Complemento a 2:
El complemento a dos es una operación con números binarios. El complemento a 2 de un número es igual al complemento de ese número más 1.
Ejemplo:
Complemento bit a bit Operación de 2 (~ 0010): 1101
Calcule el complemento a 2 de 3:
Forma binaria de 3 = 0011
Complemento a 1 de 3 = 1100
Sumando 1 al complemento a 1 = 1100 +1
Complemento a 2 de 3 = 1101Nota:
El Complemento bit a bit de 2 es igual que la representación binaria de -3
Por lo tanto, se puede concluir del ejemplo anterior que:
- Para cualquier entero n, el complemento bit a bit de n será -(n+1).
- Complemento bit a bit de N = ~N (representado en forma de complemento a 2).
- 2’complemento de ~N= -(~(~N)+1) = -(N+1).
Publicación traducida automáticamente
Artículo escrito por sathiyamoorthics19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA