
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.




program Bitwise;
{$mode objfpc}
var
  // Pascal uses a native int type as a default literal type
  // Make sure the operants work on an exact type.
  x:shortint = 2;
  y:ShortInt = 3;
begin
  Writeln('2 and 3 = ', x and y);
  Writeln('2 or 3 = ', x or y);
  Writeln('2 xor 3 = ', x xor y);
  Writeln('not 2 = ', not x);
  Writeln('2 shl 3 = ', x >> y);
  Writeln('2 shr 3 = ', x << y);
  writeln('2 rol 3 = ', rolbyte(x,y));
  writeln('2 ror 3 = ', rorbyte(x,y));
  writeln('2 sar 3 = ', sarshortint(x,y));
  Readln;
end.