operador tilde (~) también llamado bit a bit NO operador, realiza de un complemento de cualquier número binario como argumento. Si el operando a NOT es un número decimal, entonces lo convierte como binario y realiza una operación de complemento.
Para calcular el complemento, simplemente invierta todos los dígitos [0 -> 1] y [1 -> 0] Ej: 0101 = 5; ~ (0101) = 1010. Uso del operador de tilde: 1. Se usa en la operación de enmascaramiento. Enmascarar significa configurar y restablecer los valores dentro de cualquier registro. para ex:
char mask ;
mask = 1 << 5 ;
Fijará máscara a un valor binario de 10000 y esta máscara se puede utilizar para comprobar el valor del bit presente en el interior otra variable.
int a = 4;
int k = a&mask ; if the 5th bit is 1 , then k=1 otherwise k=0.
Esto se llama Masking de bits. 2. Para encontrar el equivalente binario de cualquier número usando propiedades de enmascaramiento.
#include<stdio.h>
void equi_bits(unsigned char);
int main()
{
unsigned char num = 10 ;
printf("\nDecimal %d is same as binary ", num);
equi_bits(num);
return 0;
}
void equi_bits(unsigned char n)
{
int i ;
unsigned char j , k ,mask ;
for(i = 7 ; i >= 0 ; i--)
{
j=i;
mask = 1 << j;
k = n&mask ; // Masking
k==0?printf("0"):printf("1");
}
}
de salida: Decimal 10 es el mismo que 00.001.010
Mi observación: Para la gama máxima de cualquier tipo de datos, uno de complemento proporcionar el valor negativo disminuido en 1 a cualquier valor correspondiente. ex:
~ 1 --------> -2
~ 2 ---------> -3
y así sucesivamente ... Les mostraré esta observación utilizando un código pequeño snippet
#include<stdio.h>
int main()
{
int a , b;
a=10;
b=~a; // b-----> -11
printf("%d\n",a+~b+1);// equivalent to a-b
return 0;
}
Output: 0
Nota: Esto es válido solo para el rango de tipo de datos. significa para el tipo de datos int esta regla será aplicable solo para el valor del rango [-2,147,483,648 a 2,147,483,647].
Gracias .....Que esto lo ayude
¿Para qué sirve esto? Escuché que podrías usarlo en una sesión firmada sin firmar pero no veo cómo? – MarcusJ
Bitwise NOT es útil para varias cosas, por ejemplo, máscaras de bits. No estoy seguro de lo que quiere decir con la conversión de entero sin signo a la firma. – GWW
Espera, ¿no se supone que debes Y la máscara de bits? así es como mi lector de bit lo está haciendo, pero es delicado. He leído que si tiene X y NO, resta uno y obtendrá la versión sin firmar de un número firmado, ¿no es correcto? – MarcusJ