Arduino Programlama Dili – Bit Düzeyi işlemler

0
1746
Okunma

 

Bit Düzeyi işlemler


&(Bitsel Ve), |(Bitsel Veya), ^(Bitsel xveya),~(Bitsel Değil), <<(Bitsel Sola Kaydırma), >>(Bitsel Sağa Kaydırma)


Bit Düzeyi işlemler. Bitsel işleçler, herhangi bir baytın bitini veya bitini değiştirmek için kullanılır. Yani bir bayttan daha az değişiklik yapmak istediğinizde bu tekniği kullanarak bunu yapabilirsiniz. Bitsel işleçleri kullanarak, birden çok veri öğesini tek bir baytta paketleyerek bellek tasarrufu yapabilirsiniz.

AND (&&) OR (||) ve NOT (!) Boole işleçlerini AND (&) VEYA (|) NOT (~) bit operatörleriyle karıştırmayın.

İkili sistem (Binary)

İkili sistemin 0 ve 1’lik yığınlardan oluştuğunu ve 1 baytın 8 bite sahip olduğunu zaten biliyorsunuz. 8 bit mikrodenetleyicilerin kayıtları hakkında konuşursak, her kayıt defterinde sağdan sola doğru 0’dan 7’ye kadar 8 bit bulunur. GPIO pinlerini kontrol eden kayıtlar hakkında konuştuğumuzda, durumlarını farklı sayı sistemlerinde nasıl değiştirebileceğimizi anlattık.

& (Bitsel Ve)

İşleme giren bitlerin ve’sini verir.
Yani işleme giren bitlerin her ikisi de 1 ise 1 değerini verir.
Diğer durumlarda 0′ dır;

   0  0  1  1    işlenen1
   0  1  0  1    işlenen2
   ----------
   0  0  0  1    (işlenen1 & işlenen2) dönen değer

Örnek;

int a = 92;     // ikili değer: 0000000001011100 
int b = 101;    // ikili değer: 0000000001100101 
int c = a & b;  // ikili değer: 0000000001000100 (ondalık 68)

| (Bitsel Veya)

İşleme giren bitlerin veya’sını verir. Yani işleme giren bitlerin herhangi birinde 1 gördüğü zaman 1 değerini döndürür. Sadece işleme giren bitlerin her ikisinde de 0 varsa 0’ı döndürür;

   0  0  1  1    işlenen1
   0  1  0  1    işlenen2
   ----------
   0  1  1  1    (işlenen1 | işlenen2) dönen değer

Örnek;

int a = 92;     // ikili değer: 0000000001011100 
int b = 101;    // ikili değer: 0000000001100101 
int c = a | b;  // ikili değer: 0000000001111101 (ondalık 125)

^ (Bitsel xveya)

İşleme giren bitlerin xveya’sını verir.

veya| ile tek farkı; işleme giren bitlerin her ikisinde de 1 görürse 0 değerini verir.

   0  0  1  1    işlenen1
   0  1  0  1    işlenen2
   ----------
   0  1  1  0   (işlenen1 ^ işlenen2) dönen değer

Örnek;

int a = 92;     // ikili değer: 0000000001011100 
int b = 101;    // ikili değer: 0000000001100101 
int c = a ^ b;  // ikili değer: 0000000000111001 (ondalık 57)

~ (Bitsel değil)

Her biti tersine çevirir ve sadece tek bir işlenene uygulanır.

Örnek;

 int a = 103; // binary: 0000000001100111
 int b = ~a;  // binary: 1111111110011000

<<(Bitsel Sola Kaydırma) ve >>(Bitsel Sağa Kaydırma)

Bu operatörler, sol işlenendeki bitlerin sağ işlenen tarafından belirtilen konum sayısına göre sola veya sağa kaydırılmasına neden olur.

 int a = 5;      // binary: 0000000000000101
 int b = a << 3; // binary: 0000000000101000,  görüldüğü gibi sondan 3 bit sola kaydı.
 int c = b >> 3; // binary: 0000000000000101,  şimdi de tekrar 3 bit sağa kayarak eski haline döndü.

Bit Düzeyi işlemler.


NOT: Buradaki bilgiler arduino.cc sitesinden Türkçeye çevrilmiştir.
Türkçe çevirinin tüm hakları saklıdır.
Bu web sayfası sadece link olarak paylaşılabilir.
Sayfada herhangi bir hata, öneri ve yorumlarınız için iletişim kurmanızı bekleriz.


CEVAP VER

Please enter your comment!
Please enter your name here

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.