Programozás‎ > ‎

Logikai műveletek

Logikai érték előállítása

Logikai értékeket leggyakrabban elágazások és ciklusok feltételének adunk meg, de egy logikai típusú változóban is tárolható az ilyen kifejezések értéke (ami "igaz" vagy "hamis").

A legtöbb nyelv a true és false konstans kifejezéseket használja a logikai "igaz" és "hamis" jelölésére.

Cifrább a helyzet a lazán típusos (például C) nyelveknél, ahol egy számérték (például int) is értelmezhető logikai értékként. A C nyelvben a 0 számérték a "hamis" és minden nemnulla érték "igaz".

Összehasonlító operátorok

művelet pascal java C/C++/C#
egyenlőség vizsgálat a=b a==b a==b
nemegyenlőség vizsgálat a<>b a!=b a!=b
kisebb a<b a<b a<b
nagyobb a>b a>b a>b
kisebb vagy egyenlő a<=b a<=b a<=b
nagyobb vagy egyenlő a>=b a>=b a>=b

Összetett feltételek

Ha több feltételből szeretnénk összetett logikai feltételt felépíteni, a klasszikus logika alapműveleteit ("ÉS", "VAGY", "NEM") használhatjuk. Sajnos a pascal nyelv tervezési hibája miatt pascal-ban erőteljesen zárójelezni kell az összetett feltételeket.

művelet pascal java C#
"ÉS" AND && &&
"VAGY" OR || ||
"NEM" NOT ! !
zárójelezés példa (a>0) AND (a<10) a>0 && a<10 a>0 && a<10

Példák

Pascal

if (a <> 0) AND (b*b>=4*a*c) then x1 := (-b+sqrt(b*b-4*a*c))/(2*a);

Java

if( a!=0 && b*b>=4*a*c) x1 = (-b+Math.sqrt(b*b-4*a*c))/(2*a);

Bitműveletek


művelet pascal java C/C++/C#
bitenkénti és AND & &
bitenkénti vagy OR | |
bitenkénti kizáró vagy XOR ^ ^
bitenkénti nemNOT ~ ~
léptetés jobbra SHR >> >>
léptetés jobbra előjel nélkül  >>> 
léptetés balra SHL  <<   <<  

Alkalmazások

Bitenkénti és : információ kinyerése ("kimaszkolása") bitsorozatból
Bitenkénti vagy : információ hozzáadása bitsorozathoz
Bitenkénti kizáró vagy : gyenge titkosítás, értékek cseréje
Bitenkénti nem : bitsorozat gyors előállítása
Léptetés balra : szorzás  kettő-hatvánnyal
Léptetés jobbra : osztás kettő-hatvánnyal

Példák