Bitwise operations: Difference between revisions

m
→‎{{header|REXX}}: simplified some functions, changed some comments and whitespace, used a template for output.
No edit summary
m (→‎{{header|REXX}}: simplified some functions, changed some comments and whitespace, used a template for output.)
Line 2,952:
╚════════════════════════════════════════════════════════════════════════════════════╝
</pre>
<lang rexx>/*REXX program performs bitwisebit─wise operations on integers: & | && ¬ «L »R */
numeric digits 1000 /*be able to handle some bigginormous integers. */
say center('decimal', 9) center("value", 9) center('bits', 50)
say copies('─' , 9) copies("─" , 9) copies('─', 50)
a = 21 ; call show a , 'A' /* display A */
 
ab = 21 3 ; call show call show a b , 'AB' /* showdisplay &B tell A */
b = 3 ; call show b bAnd(a, b) , 'A & B' /* show &and tell B */
call show call show bShiftL bOr(a, b) , 'A | B]' /* shift leftor */
 
call show call show bAndbXor(a, b) , 'A && B' /* andxor */
call show call show bOrbNot( a,b) , '¬ A' | B' /* ornot */
call show bXOr bShiftL(a, b) , 'A && B]' /* xor /* shift left */
call show bNot bShiftR(a, b) , A' 'A [»B]' /* not /* shirt right */
call show bShiftL(a,b) , 'A [«B]' /* shift left */
call show bShiftR(a,b) , 'A [»B]' /* shirt right */
exit /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
show: procedure; parse arg x,t; say right(x arg(1), 9) center(t arg(2), 9) right( d2b(x arg(1) ), 50); return
d2b: return x2b( d2x( arg(1) ) ) +0 0 /*some REXXes have the D2B BIF. */
b2d: return x2d( b2x( arg(1)) ) ) /* " " " " B2D " */
bNot: return b2d( translate( d2b( arg(1) ), 10, 01) ) +0 /*+0 ≡ normalizes thea number#.*/
bShiftL: return (b2d( d2b( arg(1) ) || copies(0, arg(2) ) )) +0 /* " " " " " */
bAnd: procedure; parse arg x,y; return c2d( bitand( d2c(x arg(1) ), d2c(y arg(2) ) ) )
bOr: procedure; parse arg x,y; return c2d( bitor( d2c(x arg(1) ), d2c(y arg(2) ) ) )
bXor: procedure; parse arg x,y; return c2d( bitxor( d2c(x arg(1) ), d2c(y arg(2) ) ) )
bShiftR: $=substr(reverse(d2b(arg(1))),arg(2)+1); if $=='' then $=0; return b2d(reverse($))</lang>
/*──────────────────────────────────────────────────────────────────────────────────────*/
'''{{out|output'''}}
bShiftR: procedure; parse arg x,y; $=substr(reverse(d2b(x)), y+1)
if $=='' then $=0; return b2d(reverse($))</lang>
'''output'''
<pre>
decimal value bits