Tilde operatörü (~) bitsel NOT operatörü olarak da adlandırılır , herhangi bir ikili sayının tümlemesini bağımsız değişken olarak gerçekleştirir. NOT işleneni ondalık sayı ise, onu ikili olarak dönüştürür ve birinin tamamlama işlemini gerçekleştirir.
Birinin tamamlayıcısını hesaplamak için tüm [0 -> 1] ve [1 -> 0] rakamlarını ters çevirin. Örn: 0101 = 5; ~ (0101) = 1010. Yaklaşık operatörü kullanımı: 1. Maskeleme işleminde kullanılır, Maskeleme herhangi bir register içindeki değerlerin ayarlanması ve sıfırlanması anlamına gelir. örneğin:
char mask ;
mask = 1 << 5 ;
Maskeyi 10000 ikili değere ayarlayacaktır ve bu maske diğer değişkenin içinde bulunan bit değerini kontrol etmek için kullanılabilir.
int a = 4;
int k = a&mask ; if the 5th bit is 1 , then k=1 otherwise k=0.
Buna bitlerin maskelenmesi adı verilir . 2. Maskeleme özelliklerini kullanarak herhangi bir sayının ikili eşdeğerini bulmak.
#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 ;
k==0?printf("0"):printf("1");
}
}
Çıktı: Ondalık 10, 00001010 ile aynıdır
Benim gözlemim : Herhangi bir veri türünün maksimum aralığı için, kişinin tamamlayıcısı, negatif değeri 1 ile karşılık gelen herhangi bir değere düşürür. örn:
~ 1 --------> -2
~ 2 ---------> -3
ve benzeri ... Bu gözlemi size küçük kod parçacığı kullanarak göstereceğim
#include<stdio.h>
int main()
{
int a , b;
a=10;
b=~a;
printf("%d\n",a+~b+1);
return 0;
}
Output: 0
Not: Bu, yalnızca veri türü aralığı için geçerlidir. int veri türü anlamına gelir, bu kural yalnızca [-2.147.483.648 ila 2.147.483.647] aralığının değeri için geçerli olacaktır.
Teşekkür ederim ..... Bu size yardımcı olabilir