
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.




func bitwise(a: Int, b: Int) {
  // All bitwise operations (including shifts)
  // require both operands to be the same type
  println("a AND b: \(a & b)")
  println("a OR b: \(a | b)")
  println("a XOR b: \(a ^ b)")
  println("NOT a: \(~a)")
  println("a << b: \(a << b)") // left shift
  // for right shifts, if the operands are unsigned, Swift performs
  // a logical shift; if signed, an arithmetic shift.
  println("a >> b: \(a >> b)") // arithmetic right shift
  println("a lsr b: \(Int(bitPattern: UInt(bitPattern: a) >> UInt(bitPattern: b)))") // logical right shift
}
 
bitwise(-15,3)