Перегортання
Перегортання байтів і перевертання слів замінять байти або слова. Технічно це працює так:
Скажімо, у нас є двобайтове значення (шістнадцяткове): 0x3344
Число складається з двох байтів, нижній - 0x44, а вищий - 0x33, тому давайте розмістимо їх у дві уявні комірки одного розміру байтів:
[33][44]
Тепер переверніть комірки:
[44][33]
Тому перевернуте байт значення буде 0x4433
Точно так само і зі словами, розглядаючи слово, складається з двох байтів. Припустимо, що у нас є двословне значення: 0x12345678
Розділіть їх на дві уявні комірки, тепер містять одне слово (по 2 байти):
[1234][5678]
Тепер переверніть комірки:
[5678][1234]
Тому значення перевернутого слова буде 0x56781234
Зсув
Зсув зміщує значення побіжно. Що це означає?
Візьмемо дуже просте десяткове число: 5 Далі перетворимо його у його двійкове подання: 101 Потім перенесемо його на 1:
[101] << [1010]
Ми в основному перемістили всю двійкову послідовність, залишивши одну позицію і заповнивши порожній простір нулем.
Тепер зробіть те ж саме, але зі зміщенням вправо:
[101] >> [010]
наше число зараз 10. Нижній 1 втрачається зміщенням праворуч. Нуль зліва - лише для відображення і не має значення. // Технічно є прапор CPU, який вказує на те, що біт був загублений, але він не стосується калькулятора.
Обертовий
Обертання працює абсолютно так само, як і переміщення за одним винятком: біти ніколи не втрачаються. Отже, ми беремо те саме десяткове значення 5 і його двійкове подання 101. Потім обертаємо його прямо в байті:
[00000101] ROR [10000010]
Як бачимо, [1], який було втрачено праворуч, що рухається, переносився на початку нашого байта.
Те саме, що зсуваємо ліворуч, виконаймо ряд обертів на 1 біт ліворуч, поки ми не виконаємо один біт:
[00000101] ROL [00001010]
[00001010] ROL [00010100]
[00010100] ROL [00101000]
[00101000] ROL [01010000]
[01010000] ROL [10100000]
[10100000] ROL [01000001]