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