42 lines
1.4 KiB
Plaintext
42 lines
1.4 KiB
Plaintext
PROGRAM "bitwise"
|
|
|
|
DECLARE FUNCTION Entry()
|
|
INTERNAL FUNCTION ULONG Rotr(ULONG x, ULONG s)
|
|
|
|
FUNCTION Entry()
|
|
SLONG a, b
|
|
ULONG ua, ub
|
|
a = 21
|
|
b = 3
|
|
ua = a
|
|
ub = b
|
|
PRINT
|
|
PRINT "= Decimal ="
|
|
PRINT LTRIM$(STR$(a)); " AND"; b; ":"; a & b ' also: a AND b
|
|
PRINT LTRIM$(STR$(a)); " OR"; b; ":"; a | b ' also: a OR b
|
|
PRINT LTRIM$(STR$(a)); " XOR"; b; ":"; a ^ b' also: a XOR b
|
|
PRINT "NOT"; a; ":"; ~a ' also: NOT a
|
|
PRINT LTRIM$(STR$(a)); " <<<"; b; ":"; a <<< b ' arithmetic left shift
|
|
PRINT LTRIM$(STR$(a)); " >>>"; b; ":"; a >>> b ' arithmetic right shift
|
|
PRINT LTRIM$(STR$(ua)); " <<"; b; ":"; ua << b ' bitwise left shift
|
|
PRINT LTRIM$(STR$(ua)); " >>"; b; ":"; ua >> b ' bitwise right shift
|
|
PRINT LTRIM$(STR$(ua)); " rotr"; ub; ":"; Rotr(ua, ub)
|
|
PRINT
|
|
PRINT "= Binary ="
|
|
PRINT BIN$(a); " AND "; BIN$(b); ": "; BIN$(a & b)
|
|
PRINT BIN$(a); " OR "; BIN$(b); ": "; BIN$(a | b)
|
|
PRINT BIN$(a); " XOR "; BIN$(b); ": "; BIN$(a ^ b)
|
|
PRINT "NOT "; BIN$(a); ": "; BIN$(~a)
|
|
PRINT BIN$(a); " <<< "; BIN$(b); ": "; BIN$(a <<< b)
|
|
PRINT BIN$(a); " >>> "; BIN$(b); ": "; BIN$(a >>> b)
|
|
PRINT BIN$(ua); " << "; BIN$(b); ": "; BIN$(ua << b)
|
|
PRINT BIN$(ua); " >> "; BIN$(b); ": "; BIN$(ua >> b)
|
|
PRINT BIN$(ua); " Rotr "; BIN$(ub); ": "; BIN$(Rotr(ua, ub))
|
|
END FUNCTION
|
|
|
|
' Rotate x to the right by s bits
|
|
FUNCTION ULONG Rotr(ULONG x, ULONG s)
|
|
RETURN (x >> s) | (x << (SIZE(ULONG) * 8 - s))
|
|
END FUNCTION
|
|
END PROGRAM
|