Bitový posun - změna pozice bitů ve strojovém slově .
Většina počítačů nemůže přímo adresovat bity, které jsou obsaženy ve skupinách po 8, 16, 32 nebo 64 bitech ve strojovém slově . Existuje mnoho strojových instrukcí na podporu bitové manipulace , včetně různých typů posunů. Všechny posuny jsou si navzájem podobné v chování středních bitů, které jsou jednoduše posunuty doleva nebo doprava o určitou hodnotu. Chování okrajových bitů, které opouštějí slovo a které se ve slově objevují, však závisí na typu posunu.
V elektronice se bitové posuny provádějí na posuvných registrech .
Posun, při kterém odchozí bit zmizí, aniž by to ovlivnilo zbývající bity, a bit 0 se zapíše na místo objeveného bitu .
Příklad fungování směnného provozu:
U většiny procesorů je odchozí bit uložen v příznaku přenosu . Tato funkce je široce používána při práci s vícebajtovými čísly .
V tomto posunu se se slovem zachází nejen jako se skupinou bitů, ale jako s celým číslem doplňku dvojky . Při posunutí doleva se chová jako logický posun, při posunutí doprava odchozí bit zmizí, aniž by to ovlivnilo zbývající bity, a na místo objeveného bitu se nastaví bit odpovídající znaménku.
Příklad operace posunu 8bitového čísla v přímém kódu:
Příklad operace posunu 8bitového čísla zapsaného v dodatečném až 2 kódu:
Je snadné vidět, že při aritmetickém posunu odpovídá posun vlevo násobení 2 a posun vpravo odpovídá dělení 2 (v obecném případě základu číselné soustavy) zaokrouhleném na −∞. Například:
1011 = -5 1111 = -1 >>a1 >>a1 ---- ---- 1101 = -3 1111 = -1Obvodová implementace směnových operací je velmi jednoduchá. Proto se tyto operace doporučuje používat pro operace násobení a dělení celých čísel čísly rovnými mocnině 2 (2, 4, 8, 16, 32, 64 atd.) - pokud ovšem takové zaokrouhlování záporných čísel neruší.
S tímto posunem se odchozí bit objeví místo volného čísla, které se objevilo na druhém konci.
Architektura mnoha procesorů obsahuje příznak přenosu (například cfna x86 ). Tato operace provede rotaci na ( n +1)-bitovém čísle, které se skládá z registru a příznaku přenosu.
Pokud máme například v registru číslo 11111010b, příznak přenosu vpravo cyklického posunu je 0.
Operace přenos bitové rotace se používá při práci s vícebajtovými čísly . Konkrétně, chcete-li posunout dlouhé číslo o 1 doprava, vymažte [1] cf (v případě dělení se znaménkem jej zapište do cfbitu vyššího řádu slova vyššího řádu) a otočte o jednu přes cfkaždé slovo, počínaje z vrchu. Řekněme například, že máme číslo 011000111100b zahrnující tři 4bitová slova:
Bylo: HI=0110, MED=0011, LO=1100, cf=0 Po HI směně: HI=0011, MED=0011, LO=1100, cf=0 Po posunu MED: HI=0011, MED=0001, LO=1100, cf=1 Po posunu LO: HI=0011, MED=0001, LO=1110, cf=0Posuny přes příznakový registr o více než 1 bit se prakticky nepoužívají.