Biteltolás – a bitek pozíciójának megváltoztatása a gépi szóban .
A legtöbb számítógép nem tudja közvetlenül megcímezni azokat a biteket, amelyek egy gépi szóban 8, 16, 32 vagy 64 bites csoportokban találhatók . Számos gépi utasítás támogatja a bitkezelést , beleértve a különféle típusú eltolásokat. Minden eltolás hasonló egymáshoz a középső bitek viselkedésében, amelyeket egyszerűen balra vagy jobbra tolnak el egy bizonyos mértékben. A szót elhagyó és a szóban megjelenő élbitek viselkedése azonban az eltolás típusától függ.
Az elektronikában a biteltolásokat az eltolási regisztereken hajtják végre .
Egy eltolás, amelyben a kimenő bit eltűnik anélkül, hogy befolyásolná a fennmaradó biteket, és a megjelenő bit helyére a 0 bit kerül beírásra .
Példa a műszak működésére:
A legtöbb processzorban a kimenő bitet a carry flagben tárolják . Ezt a funkciót széles körben használják többbájtos számokkal való munka során .
Ebben az eltolásban a szót nem csak bitcsoportként, hanem kettős komplementer egészként kezeli a rendszer . Balra tolva logikai eltolásként viselkedik, jobbra tolva a kimenő bit eltűnik anélkül, hogy a fennmaradó bitekre hatással lenne, és a megjelenő bit helyére az előjelnek megfelelő bit kerül.
Példa egy 8 bites szám eltolási műveletére egy közvetlen kódban:
Példa egy további legfeljebb 2 kódban írt 8 bites szám eltolási műveletére:
Könnyen belátható, hogy aritmetikai eltolással a balra eltolás a 2-vel való szorzást, a jobbra eltolás pedig a 2-vel való osztást (általános esetben a számrendszer alapjára) –∞ -ra kerekítve . Például:
1011 = -5 1111 = -1 >>a1 >>a1 ---- ---- 1101 = -3 1111 = -1A műszakos műveletek áramköri megvalósítása nagyon egyszerű. Éppen ezért ezeket a műveleteket ajánlatos egész számok 2 hatványával egyenlő szorzás és osztás műveleteihez használni (2, 4, 8, 16, 32, 64 stb.) - kivéve természetesen az ilyen kerekítést. negatív számok nem zavarják.
Ezzel az eltolással a kimenő bit jelenik meg a másik végén megjelent szabad szám helyén.
Számos processzor architektúrája tartalmaz átviteli jelzőt (például x86cf - on ). Ez a művelet az ( n +1) bites számon hajt végre egy elforgatást , amely egy regiszterből és egy átviteli jelzőből áll.
Például, ha a regiszterben a 11111010b szám szerepel, a ciklikus eltolás jobbra átviteli jelzője 0.
A hordozási bitforgatás műveletet akkor használja, ha többbájtos számokkal dolgozik . Különösen, ha egy hosszú számot 1-gyel jobbra szeretne eltolni, törölje az [1]-et cf (előjeles osztás esetén írja be a cfmagasabb rendű szó magasabb rendű bitjébe), és forgassa el eggyel cfminden szóban, kezdve a tetejéről. Tegyük fel például, hogy a 011000111100b szám három 4 bites szót ölel fel:
Volt: HI=0110, MED=0011, LO=1100, cf=0 HI eltolás után: HI=0011, MED=0011, LO=1100, cf=0 MED eltolás után: HI=0011, MED=0001, LO=1100, cf=1 LO eltolás után: HI=0011, MED=0001, LO=1110, cf=0A zászlóregiszterben 1 bitnél nagyobb mértékben történő eltolás gyakorlatilag nem használatos.