Operator Tilde (~) juga disebut operator bitwise NOT, melakukan pelengkap seseorang atas bilangan biner sebagai argumen. Jika operan ke NOT adalah bilangan desimal maka ia mengubahnya sebagai biner dan melakukan operasi komplemen satu.
Untuk menghitung komplemen seseorang, cukup balikkan semua digit [0 -> 1] dan [1 -> 0] Ex: 0101 = 5; ~ (0101) = 1010. Penggunaan operator tilde: 1. Digunakan dalam operasi masking, Masking berarti mengatur dan mereset nilai di dalam register manapun. misalnya:
char mask ;
mask = 1 << 5 ;
Ini akan mengatur mask ke nilai biner 10000 dan mask ini dapat digunakan untuk memeriksa nilai bit yang ada di dalam variabel lain.
int a = 4;
int k = a&mask ; if the 5th bit is 1 , then k=1 otherwise k=0.
Ini disebut Masking bit. 2. Untuk menemukan padanan biner dari bilangan apa pun menggunakan properti masking
#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");
}
}
Output: Desimal 10 sama dengan 00001010
Pengamatan saya : Untuk rentang maksimum dari semua tipe data, pelengkap satu memberikan nilai negatif yang diturunkan 1 ke nilai yang sesuai. mis .:
~ 1 --------> -2
~ 2 ---------> -3
dan seterusnya ... Saya akan tunjukkan observasi ini menggunakan potongan kode kecil
#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
Catatan: Ini hanya berlaku untuk rentang tipe data. artinya untuk tipe data int aturan ini hanya akan berlaku untuk nilai range [-2,147,483,648 hingga 2,147,483,647].
Terima kasih ..... Semoga ini membantu Anda