Sayfalar

2 Kasım 2015 Pazartesi

George Boole'nin 200. Doğum Günü


Bugün, Goerge Boole'nin 200. doğum günü olduğunu Google sayesinde öğrendim ve yayınladıkları doodle çok hoşuma gitti. Bu yüzden sizinle yanıp sönen bu harflerin ne anlama geldiğini ve birkaç ilginç bilgiyi paylaşmak istiyorum.
AND, OR ve NOT (ve, veya, değil) işlemlerini, liseden (mantık dersinden) hatırlıyorsunuzdur ama hatırlamıyor olabileceğiniz bir işlem daha vardı Google'ın bugünki ana sayfasında: XOR(exclusive or). - Türkçe çevirisi çok daha anlaşılır, "ya da". - XOR işlemi OR işlemine çok benzer ancak, OR'ın aksine hem x hem de y doğru olduğunda yanlış oluyor.  İşte XOR'un doğruluk tablosu:


Genelde derslerde, kitaplarda pek bahsedilmez ama aslında programla dillerinde XOR işlemi de mevcut. C ve benzeri (C++, Java) gibi dillerde XOR'un syntaxi ^. Bir keresinde dersde geçici alan kullanmadan değişkenlerin değerini değiştirebilecek olan var mı diye sormuştum. Bunu yapmanın yollarından biri de XOR kullanmaktı. Şu şekilde:

int a, b;

...

a ^= b; 
b ^= a;
a ^= b;

Dikkat ettiyseniz XOR(^), AND(&&) ve OR(||)  işlemin aksine tek karakterden oluşuyor. Bunun nedeni bir bitwise işlemi olması. Yani sayıların binary(ikilik tabandaki) gösterimleri üzerinde işlem yapıyor. AND(&) ve OR(|) bitwise işlemleri ise bu şekilde. Peki neden ^^ yok ? Gerek yok, çünkü != var. Doğruluk tablosundan da farkedebileceğiniz üzere aslında XOR ile NOT EQUAL aynı şeye denk geliyor.

Peki şimdi gelelim Google'ın anasayfasında yanıp sönen ışıklar ne anlama geldiğine. Tahmin edebileceğiniz üzere yanıyor ise doğru, sönük ise yanlış. En basitinden başlayalım,


Eğer (NOT x) ve (NOT y) doğru ise, ne x ne de y doğru bu yüzden x ve y sönüyor.

(x AND y) ve (x OR y) doğru iken sadeleştirip görebileceğiniz gibi, doğruluk tablosuna bakıldığında AND ve OR işlemlerinin ortak olduğu yerin hem x'in hem y'nin doğru olduğu kısım olduğu rahatça gözüküyor.

(x XOR y)  ve (x OR y) doğru iken ikisinin kesişiminden ya x ya da y nin doğru olması gerekiyor, bu yüzden NOT x yanarken, y yanıyor, NOT y yanarken ise x yanıyor.

Gördüğünüz gibi 4 farklı durum var: {(), (x), (y), (x,y)}, ve Google hepsini sıralamış, {00, 01, 10, 11} bir sayaç gibi gibi 0'dan 3'e kadar sayıp duruyor. Eğer dikkat ettiyseniz yanıp sönen harflar sadece x ve y için geçerli değil, örneğin NOT x ve NOT y yanarken diğer hepsi sönük çünkü ne x AND y, ne x XOR y ne de x OR y'nin doğru olması mümkün değil. Ayrıca Google başka durum da bırakmamış, totoloji olacak biçimde başka hiçbir sönük, yanık kombinasyonu bulmak mümkün değil.

Gördüğünüz üzere, Google'ın doodle'ları bile zekice...

Hiç yorum yok: