
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.




use IO;
 
bundle Default {
  class Test {
    function : Main(args : String[]) ~ Nil {
      BitWise(3, 4);
    }
 
    function : BitWise(a : Int, b : Int) ~ Nil {
        Console->GetInstance()->Print("a and b: ")->PrintLine(a and b);
      Console->GetInstance()->Print("a or b: ")->PrintLine(a or b);
      Console->GetInstance()->Print("a xor b: ")->PrintLine(a xor b);
      # shift left & right are supported by the compiler and VM but not 
      # exposed to end-users; those instructions are used for optimizations
    }
  }
}