Volteando
El byte flip y el word flip intercambiarán bytes o palabras. Técnicamente funciona así:
Digamos que tenemos un valor de dos bytes (hexadecimal): 0x3344
El número consiste en dos bytes, el más bajo es 0x44, y el más alto es 0x33, así que pongámoslos en dos células imaginarias de un tamaño de un byte:
[33][44]
Ahora, voltea las células:
[44][33]
Por lo tanto, el valor del byte volteado será 0x4433
De la misma manera con las palabras, considerando que la palabra consiste en dos bytes. Supongamos que tenemos un valor de dos palabras: 0x12345678
Dividirlas en dos células imaginarias, que ahora contienen una palabra (2 bytes) cada una:
[1234][5678]
Ahora, voltea las células:
[5678][1234]
Por lo tanto, el valor de la palabra volteada será 0x56781234
Cambiando
Cambiar los valores de los cambios en el sentido de los bits. ¿Qué es lo que significa?
Tomemos un número decimal muy simple: 5 Luego, convirtámoslo a su representación binaria: 101 Entonces, cambiemos a la izquierda a la 1:
[101] << [1010]
Básicamente movimos toda la secuencia binaria a la izquierda de una posición y llenamos el espacio vacío con un cero.
Ahora haz lo mismo, pero con el cambio a la derecha:
[101] >> [010]
nuestro número es el 10 ahora. El 1 inferior se pierde al cambiar a la derecha. El cero de la izquierda es sólo para mostrar y no tiene valor. // Técnicamente hay una bandera de la CPU que indica que el bit se perdió, pero no es relevante para la calculadora.
Rotando
La rotación funciona absolutamente igual que el desplazamiento con una excepción: los bits nunca se pierden. Por lo tanto, tomamos el mismo valor decimal 5 y su representación binaria 101. Luego lo rotamos dentro de un byte:
[00000101] ROR [10000010]
Como pueden ver, el [1] que se perdió en el desplazamiento a la derecha fue llevado al principio de nuestro byte.
Lo mismo con el desplazamiento a la izquierda, vamos a realizar series de rotaciones por 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]
1 votos
Para limitar el rango de 2 o 1, basta con sumar FFFF para 16 bits, FF para 8, etc. ASEGÚRESE de mantenerlo en formato hexadecimal mientras realiza estas operaciones, de lo contrario lo estropeará.
0 votos
También existe una alternativa a la calculadora de existencias: bitcalc.abeghyan.com