
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.




def bitwise = { a, b ->
    println """
a & b   = ${a} & ${b}   = ${a & b}
a | b   = ${a} | ${b}   = ${a | b}
a ^ b   = ${a} ^ ${b}   = ${a ^ b}
~ a     = ~ ${a}     = ${~ a}
a << b  = ${a} << ${b}  = ${a << b}
a >> b  = ${a} >> ${b}  = ${a >> b}         arithmetic (sign-preserving) shift
a >>> b = ${a} >>> ${b} = ${a >>> b}  logical (zero-filling) shift
"""
}