Volteando
La inversión de bytes y la inversión de palabras intercambiarán bytes o palabras. Técnicamente funciona así:
Digamos que tenemos un valor de dos bytes (hexadecimal): 0x3344
El número consta de dos bytes, el más bajo es 0x44 y el más alto es 0x33, así que colóquelos en dos celdas imaginarias de un tamaño de byte:
[33][44]
Ahora, voltea las celdas:
[44][33]
Por lo tanto, el valor de byte invertido será 0x4433
De la misma manera con las palabras, considerando la palabra consta de dos bytes. Supongamos que tenemos un valor de dos palabras: 0x12345678
Divídalos en dos celdas imaginarias, que ahora contienen una palabra (2 bytes) cada una:
[1234][5678]
Ahora, voltea las celdas:
[5678][1234]
Por lo tanto, el valor invertido de la palabra será 0x56781234
Cambiando
Desplazar desplaza valores bit a bit. Qué significa eso?
Tomemos un número decimal muy simple: 5 Luego, convirtámoslo a su representación binaria: 101 Luego, cambiemos a la izquierda por 1:
[101] << [1010]
Básicamente, movimos toda la secuencia binaria a la izquierda de una posición y llenamos el espacio vacío con cero.
Ahora haz lo mismo, pero con desplazamiento a la derecha:
[101] >> [010]
Nuestro número es 10 ahora. El 1 inferior se pierde al desplazarse a la derecha. El cero a la izquierda es solo para mostrar y no tiene valor. // Técnicamente, hay un indicador de CPU que indica que se perdió el bit, pero no es relevante para la calculadora.
Giratorio
La rotación funciona absolutamente igual que el desplazamiento con una excepción: los bits nunca se pierden. Entonces, tomamos el mismo valor decimal 5 y su representación binaria 101. Luego lo rotamos a la derecha dentro de un byte:
[00000101] ROR [10000010]
Como puede ver, el [1] que se perdió en el desplazamiento a la derecha se llevó al comienzo de nuestro byte.
Lo mismo con el desplazamiento a la izquierda, realicemos una serie de rotaciones de 1 bit a la izquierda hasta que llevemos un bit:
[00000101] ROL [00001010]
[00001010] ROL [00010100]
[00010100] ROL [00101000]
[00101000] ROL [01010000]
[01010000] ROL [10100000]
[10100000] ROL [01000001]