Der Tilde-Operator (~), auch bitweiser NOT-Operator genannt, führt das Komplement einer beliebigen Binärzahl als Argument aus. Wenn der Operand auf NOT eine Dezimalzahl ist, konvertiert er ihn als binär und führt die eigene Komplementoperation aus.
Um das eigene Komplement zu berechnen, invertieren Sie einfach alle Ziffern [0 -> 1] und [1 -> 0]. Beispiel: 0101 = 5; ~ (0101) = 1010. Verwendung des Tilde-Operators: 1. Wird beim Maskierungsvorgang verwendet. Maskierung bedeutet das Einstellen und Zurücksetzen der Werte in einem beliebigen Register. zum Beispiel:
char mask ;
mask = 1 << 5 ;
Die Maske wird auf einen Binärwert von 10000 gesetzt, und diese Maske kann verwendet werden, um den in einer anderen Variablen vorhandenen Bitwert zu überprüfen.
int a = 4;
int k = a&mask ; if the 5th bit is 1 , then k=1 otherwise k=0.
Dies wird als Maskierung von Bits bezeichnet. 2.Um das binäre Äquivalent einer beliebigen Zahl mithilfe der Maskierungseigenschaften zu ermitteln.
#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");
}
}
Ausgabe: Dezimal 10 entspricht 00001010
Meine Beobachtung : Für den maximalen Bereich eines Datentyps liefert das eigene Komplement den um 1 verringerten negativen Wert auf einen entsprechenden Wert. Beispiel:
~ 1 --------> -2
~ 2 ---------> -3
und so weiter ... Ich werde Ihnen diese Beobachtung mit einem kleinen Code-Snippet zeigen
#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
Hinweis: Dies gilt nur für den Bereich des Datentyps. Mittel für den Datentyp int Diese Regel gilt nur für den Wert des Bereichs [-2.147.483.648 bis 2.147.483.647].
Danke ..... Möge das dir helfen