Commodore sayı 12, sayfa 55

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 55

1+1=10 (10 sembolünün 2 tabanlı sistemde 10 tabanlı 2 sayısını ifade ettiğini hatırlatalım). 1 and 1=1

VEYA İşlemi: OR

Bir önceki örnekte gördüğümüz iki cümleyi “ve” kelimesi ile birleştirebileceğimiz gibi “veya” kelimesi ile de birleştirebiliriz: “Yağmur yağıyor veya sokaklar ıslak”. Ancak gündelik dilde kullanılan “veya” kelimesi ile bir Boole cebiri işlemi olan “veya” arasında önemli bazı farklar vardır. Şöyle ki, gündelik dilde kullanılan “veya” genellikle “ya biri ya öteki ama ikisi birden değil” anlamına gelir. Dolayısıyla, cümlelerden her ikisinin birden doğru olması halinde, gündelik dilde bu cümlelerin “veya” kelimesi ile birleştirilmesinden elde edilen cümle yanlış olur (Bu bakımdan gündelik dildeki “veya” kelimesi, Boole cebirindeki dar veya işlemine tekabül eder. Bkz. bir sonraki bölüm). Halbuki Boole cebirinin OR kelimesi ile gösterilen “veya” işleminde, cümlelerden herhangi birinin ya da ikisinin birden doğru olması sonuç cümlesinin doğru olmasına yeter. O halde veya işleminin doğruluk değerleri tablosunu şöyle yazabiliriz:

A B A OR B 1 1 1 1 0 1 0 1 1 0 0 0 DAR VEYA İŞLEMİ: XOR

Daha önce de belirttiğimiz gibi Boole cebirindeki “dar veya” işlemi, aynen gündelik dildeki “veya” kelimesi gibidir. Yani “dar veya” işlemi ile birleştirilmiş iki cümleden müteşekkil cümle, bileşenlerinden ancak bir tanesi doğru ise doğrudur. O halde doğruluk değerleri tablosunu şöyle:

A B A XOR B 1 1 0 1 0 1 0 1 1 0 0 0

Daha sonra da göreceğimiz gibi birçok bilgisayar dilinde cümleleri “dar veya” işlemi ile birleştirme imkânı öngörülmemiştir. Ancak bu büyük bir problem çıkarmaz. Çünkü “dar veya” işlemi ile elde etmek istediğimiz sonucu diğer işlemleri birleştirerek elde edebiliriz. Bunun nasıl yapılabileceğini görmek için, bir Boole cebiri işlemi daha öğrenmemiz gerekiyor.

DEĞİL İşlemi: NOT

Diğer işlemlerin aksine, “değil” işlemi iki ya da daha fazla cümleyi birleştirmez, tek bir cümlenin doğruluk değerini tersine çevirir ya da zıtlar. Yani cümle doğru ise, kendisine “değil” işlemi uygulandığında sonuç yanlış olur, yok eğer cümle yanlışsa, değil işleminin sonucu doğru olur:

A NOT A 1 0 0 1

Karmaşık İşlemler

Şimdiye kadar ihtiyacımız olan bütün Boole cebiri işlemlerini gördük. Ama bunlar basit işlemlerdi. Yani iki temel bilgi alıp bunlar üzerine tek bir işlem uygulamakla yetiniyorduk. Ama aynen matematikte olduğu gibi Boole cebirinde de, kimi işlemlerin sonuçlarına yeni işlemler uygulayarak, işlemlerimizi karmaşıklaştırabiliriz. Ama yine aynen matematikte olduğu gibi burada da parantezlerin rolü çok mühimdir. Mesela şu iki karmaşık işlemi karşılaştıralım:

A B C 1 1 1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 0 0 (A OR B) AND C (A OR (B AND C)) 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0

Görüldüğü gibi, parantezlerin nasıl yerleştirildiğine bağlı olarak, işlemler çok farklı sonuçlar veriyor. Çünkü birinci durumda, önce A ve B cümleleri “veya” işlemi ile birleştiriliyor (A OR B), daha sonra bu işlemin sonucu sanki tek bir cümleymişçesine muamele görüyor ve “ve” işlemi ile C cümlesi ile birleştiriliyor ((A OR B) AND C), ikinci örnekte ise önce B ve C cümleleri “ve” işlemi ile birleştirilerek (B AND C) tek bir cümleye dönüştürülüyor. Sonra bu tek cümle gibi yorumlanan sonuç “veya” işlemiyle A cümlesi ile birleştiriliyor (A OR (B AND C)). Şimdi daha karmaşık bir örneği gözden geçirelim. Biraz önce, “dış veya” -XOR- işlemini görecek bir komutun birçok bilgisayar dilinde bulunmadığını, ancak bu işlemin vereceği sonucun, diğer işlemlerin birleştirilmesiyle elde edilebileceğini söylemiştik. Hatırlanacağı gibi XOR işleminin doğruluk değerleri tablosu şöyleydi:

A B A XOR B 1 1 0 0 1 1 1 0 1 0 0 0

Sonuç olarak aynı doğruluk değerleri dizisini şu işlem de verebilir: (A OR B) AND NOT (A AND B). Önce bunun gerçekten böyle olup olmadığını, söz konusu işlemin gerçekten XOR işlemiyle aynı sonucu verip vermediğini sınayalım:

A B A OR B 1 1 1 0 1 0 1 1 0 0 0 0 A AND B NOT (A AND B) 1 0 1 0 1 0

(A OR B) AND NOT (A AND B) 0

Görüldüğü gibi bileşenlerin doğruluk değerleri aynı olduğunda, (A OR B) AND NOT (A AND B) işleminin sonuçlarıyla, A XOR B işlemlerinin sonuçlarının da doğruluk değerleri aynı oluyor. Dolayısıyla bir işlemin yerine ötekini kullanabiliriz. İki işlem arasındaki özdeşliği yaklaşık bir Türkçe'ye çevirdiğimizde de görebiliriz: A veya B doğru olacak ama (ve) hem A hem B doğru olmayacak. 0

Klavyeyle gezinmek için ← ve → tuşları.