
Basic Data Operation

This is a basic data operation. It represents a fundamental action on a basic data type.
You may see other such operations in the Basic Data Operations category, or:


Integer Operations
Arithmetic |
Comparison
Boolean Operations
Bitwise |
Logical
String Operations
Concatenation |
Interpolation |
Comparison |
Matching
Memory Operations
Pointers & references |
Addresses




Task

Write a routine to perform a bitwise AND, OR, and XOR on two integers, a bitwise NOT on the first integer, a left shift, right shift, right arithmetic shift, left rotate, and right rotate.

All shifts and rotates should be done on the first integer with a shift/rotate amount of the second integer.

If any operation is not available in your language, note it.




  [ [] swap 
    64 times 
      [ 2 /mod 
        number$ rot join swap ]
    drop 
    echo$ cr ]                                   is echobin (   n -->   )
 
  [ 64 swap - rot64 ]                            is rrot64  (   n --> n )
 
  [ say "first integer:   " over       echobin
    say "second integer:  " dup        echobin
    say "bitwise AND:     " 2dup &     echobin  
    say "bitwise OR:      " 2dup |     echobin
    say "bitwise XOR:     " 2dup ^     echobin
    say "bitwise NOT:     " over ~     echobin
    say "bitwise LSHIFT:  " 2dup <<    echobin
    say "bitwise RSHIFT:  " 2dup >>    echobin
    say "bitwise LROTATE: " 2dup rot64 echobin
    say "bitwise RROTATE: "     rrot64 echobin ] is task    ( n n -->   )
 
hex FFFFF hex F task