Не подскажете как логически интерпритирровать следующие выражения:

Код AS3:
private static function H(arg1:uint, arg2:uint, arg3:uint):uint
{
return arg1 ^ arg2 ^ arg3;
}
private static function I(arg1:uint, arg2:uint, arg3:uint):uint
{
return arg2 ^ (arg1 | !arg3);
}
private static function G(arg1:uint, arg2:uint, arg3:uint):uint
{
return arg1 & arg3 | arg2 & !arg3;
}