C programlama #Bölüm 13# Bitwise Operatörleri

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.


İşlemlerOperatö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.

aba&b
000
010
100
111
ve kapısı

aba|b
000
011
101
111
veya kapısı

a~a
01
10
Değil kapısı

aba^b
000
011
101
110
Özel veya kapısı

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.