Bitwise operations: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
(→{{header|XBasic}}: Added) |
||
Line 5,487: | Line 5,487: | ||
end</lang> |
end</lang> |
||
== {{header|XBasic}} == |
|||
{{works with|Windows XBasic}} |
|||
<lang xbasic> |
|||
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 |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
= Decimal = |
|||
21 AND 3: 1 |
|||
21 OR 3: 23 |
|||
21 XOR 3: 22 |
|||
NOT 21:-22 |
|||
21 <<< 3: 168 |
|||
21 >>> 3: 2 |
|||
21 << 3: 168 |
|||
21 >> 3: 2 |
|||
21 rotr 3: 2684354562 |
|||
= Binary = |
|||
10101 AND 11: 1 |
|||
10101 OR 11: 10111 |
|||
10101 XOR 11: 10110 |
|||
NOT 10101: 11111111111111111111111111101010 |
|||
10101 <<< 11: 10101000 |
|||
10101 >>> 11: 10 |
|||
10101 << 11: 10101000 |
|||
10101 >> 11: 10 |
|||
10101 rotr 11: 10100000000000000000000000000010 |
|||
</pre> |
|||
=={{header|XLISP}}== |
=={{header|XLISP}}== |