
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.




bitwise(a,b)
Prgm
  Local show, oldbase
  Define show(label, x)=Prgm
    Local r
    setMode("Base","DEC")
    string(x) → r
    setMode("Base","HEX")
    Disp label & r & " " & string(x)
  EndPrgm
  getMode("Base") → oldbase
  show("", {a, b})
  show("And ", a and b)
  show("Or  ", a or b)
  show("Xor ", a xor b)
  show("Not ", not a)
  Pause "[Press ENTER]"
  show("LSh ", shift(a,b))
  show("RSh ", shift(a,–b))
  show("LRo ", rotate(a,b))
  show("RRo ", rotate(a,–b))
  setMode("Base",oldbase)
EndPrgm