How to use the programming calculator in OS X?
Solution 1:
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] << [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] >> [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]
Solution 2:
-
byte flip
/word flip
- not sure about these -
X<<Y
/X>>Y
- bitshift X to the left/right Y times -
RoL
/RoR
- Rotate left/right, similar to bitshifing, except the bits wrap around in a circular fashion