XOR ile basit seçimler (statement)

17-2-2005

Mesela klavyedeki gibi Shift ve Caps Lock'u simule etmek istiyoruz. Basit şekilde düşünürsek doğru kondüsyonda büyük harfi göstermek için şu şekilde bir kod gerekir;

;pseudo kod

if CAPSLOCK Then
if SHIFT Then
upper = false
else
upper = true
end if
else
if SHIFT Then
upper = true
else
upper = false
end if
end if

 

daha mantıklısı;

if CAPSLOCK Then
upper = NOT SHIFT
else
upper = SHIFT
end if

 

daha da güzeli XOR ile;

upper = NOT (CAPSLOCK XOR SHIFT )

 

Örnek C++ kullanımı da şu şekilde olabilir;

BOOL upper = (! GetKeyState(VK_CAPITAL)^ ( (GetKeyState(VK_SHIFT) & SHIFTED ) ? 1 : 0);

 

Merak edenlere, GetKeyState tuşun o anki konumunu alır, burada VK_CAPITAL (0x14) ile VK_SHIFT (0x10) constantlar? ile SHIFT ve CAPSLOCK u alıyoruz.

Recent Blog Posts

See all of the blog posts