my @a=(0,0,1,1); my @b=(0,1,0,1); print " | ___________ \n"; print " | _ _ ___ ___ ___ ___ ___ \n"; print " A B | A B (A&B) (A|B) (AxB) (A&B) (A|B) (AxB) ((A|B)&(A&B)) ((A&B)|(A|B))\n"; print "-----+--------------------------------------------------------------------\n"; for (0..3) { printf" %d %d | %d %d %d %d %d %d %d %d %d %d \n", $a[$_], $b[$_], ($a[$_]?0:1), ($b[$_]?0:1), ($a[$_] and $b[$_]), ($a[$_] or $b[$_]), ($a[$_] xor $b[$_]), (($a[$_] and $b[$_])?0:1), (($a[$_] or $b[$_])?0:1), (($a[$_] xor $b[$_])?0:1), ((($a[$_] or $b[$_]) and ($a[$_] and $b[$_])?0:1)), ((($a[$_] and $b[$_]) or ($a[$_] or $b[$_])?0:1)?0:1); } __END__ | ___________ | _ _ ___ ___ ___ ___ ___ A B | A B (A&B) (A|B) (AxB) (A&B) (A|B) (AxB) ((A|B)&(A&B)) ((A&B)|(A|B)) -----+-------------------------------------------------------------------- 0 0 | 1 1 0 0 0 1 1 1 0 0 0 1 | 1 0 0 1 1 1 0 0 1 1 1 0 | 0 1 0 1 1 1 0 0 1 1 1 1 | 0 0 1 1 0 0 0 1 0 0