LOGICAL OPERATORS PERFORM TESTS ON MULTIPLE RELATIONS, BIT
MANIPULATIONS, OR BOOLEAN OPERATIONS. THEY RETURN A TRUE
(NONZERO) OR FALSE (ZERO) VALUE TO BE USED IN MAKING A DECISION.
IF D < 200 AND F < 4 THEN 80
WHILE I > 10 OR K < 0
...
WEND
IF NOT P THEN PRINT "NAME NOT FOUND"
THE SIX BASIC LOGICAL OPERATORS ARE LISTED IN TABLE C.2 IN ORDER
OF PRECEDENCE.
EACH OPERATOR RETURNS RESULTS AS INDICATED IN TABLE C.3.
"T" INDICATES A TRUE VALUE AND "F" INDICATES A FALSE VALUE.
OPERATORS ARE LISTED IN ORDER OF OPERATOR PRECEDENCE.
IN AN EXPRESSION, LOGICAL OPERATIONS (ALSO KNOWN AS BOOLEAN
OPERATIONS) ARE PERFORMED AFTER ARITHMETIC AND RELATIONAL
OPERATIONS. OPERANDS ARE CONVERTED TO INTEGERS (OR, IF
NECESSARY, LONG INTEGERS) BEFORE THE LOGICAL OPERATION IS DONE.
THE OPERANDS OF LOGICAL OPERATORS MUST BE IN THE RANGE
-2,147,483,648 TO 2,147,483,647. IF THE OPERANDS ARE NOT IN THIS
RANGE, AN ERROR RESULTS. IF THE OPERANDS ARE EITHER 0 OR -1,
LOGICAL OPERATORS RETURN 0 OR -1 AS THE RESULT, AS IN THE
FOLLOWING EXAMPLE.
EXAMPLE.~ THE FOLLOWING EXAMPLE PRINTS A "TRUTH TABLE":
PRINT " X Y NOT AND OR ";
PRINT "XOR EQV IMP"
PRINT
I = 10: J = 15
X = (I = 10): Y = (J = 15) 'X IS TRUE (-1); Y IS TRUE (-1)
CALL TRUTHTABLE (X,Y)
X = (I > 9): Y = (J > 15) 'X IS TRUE (-1); Y IS FALSE (0)
CALL TRUTHTABLE (X,Y)
X = (I <> 10): Y = (J < 16) 'X IS FALSE (0); Y IS TRUE (-1)
CALL TRUTHTABLE (X,Y)
X = (I < 10): Y = (J < 15) 'X IS FALSE (0); Y IS FALSE (0)
CALL TRUTHTABLE (X,Y)
END
SUB TRUTHTABLE(X,Y) STATIC
PRINT X " " Y " "; NOT X " " X AND Y " " X OR Y;
PRINT " " X XOR Y " " X EQV Y " " X IMP Y
PRINT
END SUB
OUTPUT:
X Y NOT AND OR XOR EQV IMP
-1 -1 0 -1 -1 0 -1 -1
-1 0 0 0 -1 -1 0 0
0 -1 -1 0 -1 -1 0 -1
0 0 -1 0 0 0 -1 -1
NOTE THE SIMILARITY OF THE OUTPUT FROM THIS PROGRAM TO
THE TABLE C.3: "T" BECOMES -1 AND "F" BECOMES 0. LOGICAL OPERATORS COMPARE EACH BIT OF THE FIRST OPERAND WITH THE CORRESPONDING BIT IN THE SECOND OPERAND TO COMPUTE THE BIT IN THE RESULT. IN
THESE BIT-WISE COMPARISONS, A 0 BIT IS EQUIVALENT TO A FALSE VALUE
(F) IN THE TABLE C.3, WHILE A 1 BIT IS EQUIVALENT TO A TRUE VALUE (T).
IT IS POSSIBLE TO USE LOGICAL OPERATORS TO TEST BYTES FOR A
PARTICULAR BIT PATTERN. FOR EXAMPLE, THE AND OPERATOR CAN BE
USED TO MASK ALL BUT ONE OF THE BITS OF A STATUS BYTE, WHILE
THE OR OPERATOR CAN BE USED TO MERGE TWO BYTES TO CREATE A
PARTICULAR BINARY VALUE.
PRINT 63 AND 16
PRINT -1 AND 8
PRINT 10 OR 9
PRINT 10 XOR 10, 'ALWAYS 0
PRINT NOT 10, NOT 11, NOT 0 'NOT X = -(X + 1)
OUTPUT:
16
0 -11-12-1
THE FIRST PRINT STATEMENT USES AND TO COMBINE 63 (111111 BINARY)
AND 16 (10000). WHEN BASIC CALCULATES THE RESULT OF AN AND, IT
COMBINES THE NUMBERS BIT BY BIT, PRODUCING A 1 ONLY WHEN BOTH
BITS ARE 1. BECAUSE THE ONLY BIT THAT IS A 1 IN BOTH NUMBERS IS
THE FIFTH BIT, ONLY THE FIFTH BIT IN THE RESULT IS A 1.
THE RESULT IS 16, OR 10000 IN BINARY. IN THE SECOND PRINT
STATEMENT, THE NUMBERS -1 (BINARY 1111111111111111) AND 8 (BINARY
1000) ARE COMBINED USING ANOTHER AND OPERATION. THE ONLY BIT THAT
IS A 1 IN BOTH NUMBERS IS THE FOURTH BIT, SO THE RESULT IS 8
DECIMAL OR 1000 BINARY.
THE THIRD PRINT STATEMENT USES AN OR TO COMBINE 10 (BINARY 1010)
AND 9 (BINARY 1001). AN OR PRODUCES A 1 BIT WHENEVER EITHER BIT
IS A 1, SO THE RESULT OF THE OR IN THE THIRD PRINT IS 11 (BINARY
1011). THE XOR IN THE FOURTH PRINT STATEMENT COMBINES THE NUMBER
10 (1010 BINARY) WITH ITSELF. THE RESULT IS A 0 BECAUSE AN XOR
PRODUCES A 1 ONLY WHEN EITHER, BUT NOT BOTH, BITS ARE 1.
PERFORMING A NOT ON A NUMBER CHANGES ALL 1S TO 0S AND ALL 0S TO
1S. BECAUSE OF THE WAY TWO'S COMPLEMENT NUMBERS WORK, TAKING THE
NOT OF A VALUE IS THE SAME AS ADDING ONE TO THE NUMBER AND THEN
NEGATING THE NUMBER. IN THE FINAL PRINT STATEMENT, THE
EXPRESSION NOT 10 YIELDS A RESULT OF -11.