How to use the programming calculator in OS X? I'm trying to make the best out of the programming calculator in OS X, but I don't know these functions:


byte flip
word flip
X&lt;
X>>Y
RoL/RoR (are these just sll/srl?)


Also is it possible to perform a two's complement on a narrower range i.e. 16 bits instead of 64 bits?
Flipping

Byte flip and word flip will swap bytes or words.
Technically it works like this:

Let's say we have a two byte value (hexadecimal): 0x3344

The number consists of two bytes, the lower one is 0x44, and the higher one is 0x33, so let's put them into two imaginary cells of one byte size:

[33][44]


Now, flip the cells:

[44][33]


Therefore byte flipped value will be 0x4433

Same way with words, considering word consists of two bytes.
Let's assume we have a two-word value: 0x12345678

Split them into two imaginary cells, now containing one word (2 bytes) each:

[1234][5678]


Now, flip the cells:

[5678][1234]


Therefore word flipped value will be 0x56781234

Shifting

Shifting shifts values bitwise.
What does it mean?

Let's take a very simple decimal number: 5
Then, let's convert it to its binary representation: 101
Then, let's shift it left by 1:

[101] &lt;&lt; [1010]


We basically moved the whole binary sequence left one position and filled the empty space with zero.

Now do the same, but with shifting right:

[101] &gt;&gt; [010]


our number is 10 now. The lower 1 is lost by shifting right. The zero on the left is just for display and has no value. 
// Technically there's a CPU flag which indicates that the bit was lost, but it is not relevant to the calculator.

Rotating

Rotating works absolutely same as shifting with one exception: bits are never lost.
So, we take the same decimal value 5 and its binary representation 101.
Then we rotate it right within a byte:

[00000101] ROR [10000010]


As you can see, the [1] which was lost on the shifting right was carried on the beginning of our byte.

Same with shifting left, let's perform series of rotations by 1 bit left until we carry one bit:

[00000101] ROL [00001010]
[00001010] ROL [00010100]
[00010100] ROL [00101000]
[00101000] ROL [01010000]
[01010000] ROL [10100000]
[10100000] ROL [01000001]