08.11.2014 Views

c_kitap

c_kitap

c_kitap

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

C ve Sistem Programcıları Derneği - C Ders Notları - Necati Ergin<br />

"Bitsel ve" işlecinin ürettiği değer, terimlerinin karşılıklı bitlerinin "ve" işlemine<br />

sokulmasıyla elde edilen değerdir:<br />

#include <br />

int main()<br />

{<br />

unsigned int x = 0x1BC5; /* x = 0001 1011 1100 0101 */<br />

unsigned int y = 0X3A0D; /* y = 0011 1010 0000 1101 */<br />

unsigned int z = x & y; /* z = 0001 1010 0000 0101 */<br />

printf("z = %X\n", z); /* z = 0x1A05 */<br />

}<br />

return 0;<br />

1 biti "bitsel ve" işleminde etkisiz elemandır.<br />

0 biti "bitsel ve" işleminde yutan elemandır.<br />

"Mantıksal ve" işleci yerine yanlışlıkla "bitsel ve" işlecini kullanmak sık yapılan bir<br />

hatadır. Aşağıdaki kodu dikkatli bir şekilde inceleyin:<br />

#include <br />

int main()<br />

{<br />

int x = 85;<br />

int y = 170;<br />

if (x && y)<br />

printf("dogru!\n");<br />

else<br />

printf("yanlis!\n");<br />

if (x & y)<br />

printf("dogru!\n");<br />

else<br />

printf("yanlis!\n");<br />

}<br />

return 0;<br />

Yukarıdaki programda "mantıksal ve" (&&) işleci yerine yanlışlıkla "bitsel ve" (&) işleci<br />

kullanılıyor. Hem "mantıksal ve" hem de "bitsel ve", iki terimli, araek konumunda<br />

işleçlerdir. Derleyiciler yukarıdaki kod için bir hata ya da uyarı iletisi üretmez. Yukarıdaki<br />

örnekte "mantıksal ve" işlecinin kullanılması durumunda, mantıksal "doğru" biçiminde<br />

yorumlanacak olan ifade, bitsel ve işlecinin kullanılmasıyla 0 değeri üretir, mantıksal<br />

"yanlış" olarak yorumlanır.<br />

Bitsel Özel Veya İşleci<br />

Bitsel "özel veya" işleci (bitwise exor) işleç öncelik tablosunun 9. seviyesindedir. Öncelik<br />

yönü soldan sağadır. Yan etkisi yoktur, terimleri olan nesnelerin bellekteki değeri<br />

değişmez. Değer üretmek için, terimi olan tamsayıların karşılıklı bitlerini özel veya<br />

(exclusive or) işlemine sokar. Bitsel "özel veya" işlecine ilişkin işlem tablosu aşağıda<br />

veriliyor:<br />

430

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!