Bitwise operatörleri aritmetik ve mantıksal operatörler ile karıştırmamamız gerekmektedir. Bitwise operatörleri, kullanım olarak tıpkı mantıksal operatörlere benzerler ancak sayıları karşılaştırmak yerine sayılar ile işlem yapmamızı sağlarlar. İşlem derken, aritmetik operatörler gibi işlemler değildir. Dijital elektronik serimizde görebileceğiniz bitlerin kapılar halinde işlemlerini ifade ederler.
İşlemler | Operatör |
ve kapısı (and) | & |
veya kapısı (or) | | |
Değil kapısı (not) | ~ |
Sola kaydırma | << |
Sağa kaydırma | >> |
Özel veya kapısı (xor) | ^ |
Bitwise operatörlerinin c programlama dilindeki kullanımları tabloda verilmiştir. Bu işlemler bit düzeyinde (ikilik tabanda) yapılan dijital elektronik işlemleridir.
Şimdi bu kapıların tablolarına göz atarak devam edelim.
a | b | a&b |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
a | b | a|b |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
a | ~a |
0 | 1 |
1 | 0 |
a | b | a^b |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Bu tabloları kullanarak işlem yapacağız. Bir kod üzerinde uygulamalı bir şekilde görerek anlayalım.
1 2 3 4 5 6 7 8 9 10 11 | #include<stdio.h> int main(){ int a = 7, b = 4; int x; x = a & b; printf("%d", x); return 0; } |
Örnek kodu derleyip çalıştırdığımızda terminal ekranında 4 yazdığını görürüz. 7 ile 4 sayılarının ve kapısından çıkışları 4 oluyormuş. Ama bu işlemler nasıl gerçekleşiyor.
- 7 sayısının ikilik tabandaki karşılığı 0111 (4 bit veri depolama)
- 4 sayısının ikilik tabandaki karşılığı 0100 (4 bit veri depolama)
İlkokulda yaptığımız alt alta toplama işlemlerinden yapalım. Bu konuda yukarıdaki tablolardan yardım alabiliriz. Birler basamağı için 1&0 ve kapısında 0 olarak çıkar. İkiler basamağı için de aynı durum geçerlidir ve 0 olarak çıkar. Dörtler basamağı için 1&1 ve kapısında 1 olarak çıkar. Son olarak sekizler basamağı için 0&0 ve kapısında 0 olarak çıkar. Sayıları yan yana getirdiğimizde 0100 çıkışını görüyoruz. Bu sayıda onluk tabanda tekrardan 4 sayısına denk geliyor.
0 Yorumlar