
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.




BYTE FUNC Not(BYTE a)
RETURN (a!$FF)
 
PROC Main()
  BYTE a=[127],b=[2],res
 
  res=a&b
  PrintF("%B AND %B = %B%E",a,b,res)
 
  res=a%b
  PrintF("%B OR %B = %B%E",a,b,res)
 
  res=a!b
  PrintF("%B XOR %B = %B%E",a,b,res)
 
  res=Not(a)
  PrintF("NOT %B = %B (by %B XOR $FF)%E",a,res,a)
 
  res=a RSH b
  PrintF("%B SHR %B = %B%E",a,b,res)
 
  res=a LSH b
  PrintF("%B SHL %B = %B%E",a,b,res)
RETURN