Biteltolás

Az oldal jelenlegi verzióját még nem nézték át tapasztalt közreműködők, és jelentősen eltérhet a 2015. március 22-én felülvizsgált verziótól ; az ellenőrzéshez 41 szerkesztés szükséges .

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 .

Logikai eltolás

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 .

Aritmetikai eltolás

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.

1. példa

Példa egy 8 bites szám eltolási műveletére egy közvetlen kódban:

2. példa

Példa egy további legfeljebb 2 kódban írt 8 bites szám eltolási műveletére:

Következtetés

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 = -1

A 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.

Ciklikus váltás

Ezzel az eltolással a kimenő bit jelenik meg a másik végén megjelent szabad szám helyén.

Példa

  • Tegyük fel, hogy megvan a 11111010b szám ( binárisan ).
  • Ha 1 bitet balra tolunk, a 11110101b számot kapjuk.
  • Ha az eredeti számot 1 bittel jobbra toljuk, akkor a 01111101b számot kapjuk.

Forgatás a hordozó biten keresztül

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.

  • Az 11110101b regiszterben 1 bittel balra való eltolás után a átviteli jelző 1.
  • Ezután, miután 1 bitet jobbra toltunk a 01111101b regiszterben, a átviteli jelző 1.

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=0

A zászlóregiszterben 1 bitnél nagyobb mértékben történő eltolás gyakorlatilag nem használatos.

Lásd még

Jegyzetek

  1. Az első feldolgozandó szó jelzőjének törlése helyett aritmetikai\logikai eltolás használható, ha a jelzőt cfa kimeneti bit értékére állítja be.

Linkek