
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 bitwise(int a, int b)
{
    write("a and b: %d\n", a & b);
    write("a or b:  %d\n", a | b);
    write("a xor b: %d\n", a ^ b);
    write("not a:   %d\n", ~a);
    write("a << b:  0x%x\n", a << b);
    write("a >> b:  %d\n", a >> b);
    // ints in Pike do not overflow, if a particular size of the int
    // is desired then cap it with an AND operation
    write("a << b & 0xffffffff (32bit cap):  0x%x\n",
          a << b & 0xffffffff);
}
 
void main()
{
    bitwise(255, 30);
}
 