Operators and Expressions¶
BASIC-80 operators for arithmetic, comparison, and logical operations.
Arithmetic Operators¶
| Operator | Operation | Example | Result |
|---|---|---|---|
+ |
Addition | 5 + 3 |
8 |
- |
Subtraction | 5 - 3 |
2 |
* |
Multiplication | 5 * 3 |
15 |
/ |
Division (floating point) | 5 / 2 |
2.5 |
\ |
Integer Division | 5 \ 2 |
2 |
MOD |
Modulus (remainder) | 5 MOD 2 |
1 |
^ |
Exponentiation | 5 ^ 2 |
25 |
- |
Negation (unary) | -5 |
-5 |
Integer Division and Modulus¶
10 PRINT 17 \ 5 ' Integer division: 3
20 PRINT 17 MOD 5 ' Remainder: 2
30 PRINT 17 / 5 ' Float division: 3.4
Overflow and Division by Zero¶
- Overflow: Result too large → "Overflow" error
- Underflow: Result too small → becomes 0 (no error)
- Division by zero: Returns machine infinity, execution continues
Relational Operators¶
Compare two values, return -1 (true) or 0 (false).
| Operator | Meaning | Example | Result |
|---|---|---|---|
= |
Equal to | 5 = 5 |
-1 (true) |
<> |
Not equal to | 5 <> 3 |
-1 (true) |
< |
Less than | 3 < 5 |
-1 (true) |
> |
Greater than | 5 > 3 |
-1 (true) |
<= |
Less than or equal | 3 <= 3 |
-1 (true) |
>= |
Greater than or equal | 5 >= 3 |
-1 (true) |
Examples¶
10 IF 5 > 3 THEN PRINT "5 is greater than 3"
20 X = (A = B) ' X is -1 if A equals B, 0 otherwise
30 IF N$ <> "" THEN PRINT "String is not empty"
Logical Operators¶
Perform boolean operations on numeric values.
| Operator | Operation | Example | Description |
|---|---|---|---|
NOT |
Logical NOT | NOT X |
Inverts all bits |
AND |
Logical AND | X AND Y |
1 where both bits are 1 |
OR |
Logical OR | X OR Y |
1 where either bit is 1 |
XOR |
Exclusive OR | X XOR Y |
1 where bits differ |
EQV |
Equivalence | X EQV Y |
1 where bits are same |
IMP |
Implication | X IMP Y |
0 only if X is true and Y is false |
Truth Table for Logical Operators¶
| X | Y | X AND Y | X OR Y | X XOR Y | X EQV Y | X IMP Y |
|---|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | -1 | -1 |
| 0 | -1 | 0 | -1 | -1 | 0 | -1 |
| -1 | 0 | 0 | -1 | -1 | 0 | 0 |
| -1 | -1 | -1 | -1 | 0 | -1 | -1 |
Logical Operators as Boolean Logic¶
10 IF AGE >= 18 AND CITIZEN THEN PRINT "Can vote"
20 IF X < 0 OR X > 100 THEN PRINT "Out of range"
30 FLAG = NOT FLAG ' Toggle flag
Logical Operators as Bitwise Operations¶
10 REM Set bit 3 (value 4)
20 X = X OR 4
30 REM Clear bit 3
40 X = X AND NOT 4
50 REM Toggle bit 3
60 X = X XOR 4
70 REM Test if bit 3 is set
80 IF (X AND 4) <> 0 THEN PRINT "Bit 3 is set"
Operator Precedence¶
Operators are evaluated in this order (highest to lowest):
- Parentheses
( ) - Exponentiation
^ - Negation
-(unary) - Multiplication, Division
*,/,\,MOD - Addition, Subtraction
+,- - Relational
=,<>,<,>,<=,>= - NOT
- AND
- OR
- XOR
- EQV
- IMP
Examples¶
10 PRINT 2 + 3 * 4 ' Result: 14 (not 20)
20 PRINT (2 + 3) * 4 ' Result: 20
30 PRINT 2 ^ 3 * 4 ' Result: 32 (2^3 = 8, then 8*4)
40 PRINT 10 > 5 AND 3 < 7 ' Result: -1 (true)
String Concatenation¶
Use + to join strings:
Type Conversion in Expressions¶
BASIC-80 automatically converts between numeric types:
10 I% = 5 ' Integer
20 S! = 3.14 ' Single precision
30 D# = I% * S! ' Result is single precision
40 PRINT D# ' Displays: 15.7
Conversion rules: - Integer + Single → Single - Single + Double → Double - Integer + Double → Double
See Also¶
- Type Conversion Functions
- LET Statement - Variable assignment
- IF Statement - Conditional execution
- DEFINT/SNG/DBL/STR - Variable type declarations