operatore tilde (~) anche chiamato NOT bit a bit operatore, effettua complemento a uno di qualsiasi numero binario come argomento. Se l'operando su NOT è un numero decimale, lo converte come binario e compie l'operazione di complemento.
Per calcolare il proprio complemento è sufficiente invertire tutte le cifre [0 -> 1] e [1 -> 0] Es: 0101 = 5; ~ (0101) = 1010. Uso dell'operatore di tilde: 1. Viene utilizzato nell'operazione di mascheramento. Mascheratura indica l'impostazione e il ripristino dei valori all'interno di qualsiasi registro. es:
char mask ;
mask = 1 << 5 ;
fisserà maschera per un valore binario di 10000 e questa maschera può essere utilizzato per controllare il valore del bit presente all'interno altra variabile.
int a = 4;
int k = a&mask ; if the 5th bit is 1 , then k=1 otherwise k=0.
Questo è chiamato mascheratura di bit. 2.Per trovare l'equivalente binario di qualsiasi numero utilizzando le proprietà di mascheramento.
#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");
}
}
uscita: decimale 10 è uguale 00001010
mia osservazione: Per la portata massima di qualsiasi tipo di dati, un complemento forniscono il valore negativo diminuito di 1 a qualsiasi valore corrispondente. ~ 1 --------> -2
~ 2 ---------> -3
e così via ... Ti mostrerò questa osservazione usando un piccolo codice 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: questo è valido solo per il tipo di dati. significa per tipo di dati int questa regola sarà applicabile solo per il valore dell'intervallo [-2.147.483.648 a 2.147.483.647].
Grazie .....Che questo ti aiuti
Quale scopo servirebbe? Ho sentito che potresti usarlo in unsigned -> signed conversion ma non vedo come? – MarcusJ
Bitwise NOT è utile per un numero di cose, ad esempio maschere di bit. Non sono sicuro di cosa intendi con la conversione di interi senza segno. – GWW
Aspetta, non dovresti AND la maschera di bit? è così che il mio lettore di bit lo sta facendo, ma è permaloso. Ho letto che se hai X e NON lo è, quindi sottrai uno otterrai la versione senza firma di un numero firmato, non è corretto? – MarcusJ