
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.




void testbit(int a, int b) {
  print(@"input: a = $a, b = $b\n");
  print(@"AND:  $a  & $b = $(a & b)\n");
  print(@"OR:   $a  | $b = $(a | b)\n");
  print(@"XOR:  $a  ^ $b = $(a ^ b)\n");
  print(@"LSH:  $a << $b = $(a << b)\n");
  print(@"RSH:  $a >> $b = $(a >> b)\n");
  print(@"NOT:  ~$a = $(~a)\n");
  /* there are no rotation operators in vala, but you could define your own 
     function to do what is required. */
}
 
void main() { 
  int a = 255;
  int b = 2;
  testbit(a,b); 
}