Bit shift - bittien paikan muuttaminen konesanassa .
Useimmat tietokoneet eivät voi suoraan osoittaa bittejä, jotka sisältyvät konesanan 8, 16, 32 tai 64 bitin ryhmiin . On olemassa monia koneohjeita , jotka tukevat bittien käsittelyä , mukaan lukien erilaiset siirrot. Kaikki siirrot ovat samanlaisia keskibittien käyttäytymisessä, joita yksinkertaisesti siirretään vasemmalle tai oikealle tietyn verran. Kuitenkin sanasta lähtevien ja sanassa esiintyvien reunabittien käyttäytyminen riippuu siirtymän tyypistä.
Elektroniikassa bittisiirrot suoritetaan siirtorekistereissä .
Siirto, jossa lähtevä bitti katoaa vaikuttamatta jäljellä oleviin bitteihin, ja bitti 0 kirjoitetaan ilmestyneen bitin tilalle .
Esimerkki vuorotoiminnan toiminnasta:
Useimmissa prosessoreissa lähtevä bitti on tallennettu siirtolippuun . Tätä toimintoa käytetään laajalti työskenneltäessä monitavuisten numeroiden kanssa .
Tässä siirrossa sanaa ei käsitellä vain bittiryhmänä, vaan kahden komplementin kokonaislukuna . Vasemmalle siirrettynä se käyttäytyy loogisen siirron tavoin, oikealle siirrettynä lähtevä bitti katoaa vaikuttamatta jäljellä oleviin bitteihin ja etumerkkiä vastaava bitti asetetaan ilmestyneen bitin tilalle.
Esimerkki 8-bittisen luvun siirtotoiminnosta suorassa koodissa:
Esimerkki 8-bittisen luvun siirtotoiminnosta, joka on kirjoitettu enintään 2 lisäkoodilla:
On helppo nähdä, että aritmeettisella siirrolla siirto vasemmalle vastaa kertomista kahdella ja siirto oikealle vastaa jakamista kahdella (yleisessä tapauksessa lukujärjestelmän kantaan) pyöristettynä -∞. Esimerkiksi:
1011 = -5 1111 = -1 >>a1 >>a1 ---- ---- 1101 = -3 1111 = -1Vaihtotoimintojen piiritoteutus on hyvin yksinkertaista. Siksi näitä operaatioita suositellaan käytettäväksi kokonaislukujen kerto- ja jakamisoperaatioissa luvuilla, jotka ovat yhtä suuria kuin 2:n potenssi (2, 4, 8, 16, 32, 64 jne.) - ellei tietenkään tällaista pyöristystä ole negatiivisten lukujen ei häiritse.
Tällä siirrolla lähtevä bitti ilmestyy toisessa päässä ilmestyneen ilmaisen numeron tilalle.
Monien prosessorien arkkitehtuuri sisältää siirtolipun (esimerkiksi cfx86: ssa ). Tämä operaatio suorittaa kierron ( n +1)-bittiselle numerolle, joka koostuu rekisteristä ja siirtolipusta.
Jos rekisterissä on esimerkiksi numero 11111010b, syklisen siirron oikealle siirtolippu on 0.
Siirtobittien kiertotoimintoa käytetään työskenneltäessä monitavuisten numeroiden kanssa . Erityisesti, jos haluat siirtää pitkää numeroa oikealle yhdellä, tyhjennä [1] cf (jos jako on etumerkillinen, kirjoita se cfkorkean kertaluvun sanan korkeamman asteen bittiin) ja käännä yksi cfjokaisen sanan läpi alkaen Alusta. Oletetaan esimerkiksi, että meillä on numero 011000111100b, joka kattaa kolme 4-bittistä sanaa:
Oli: HI=0110, MED=0011, LO=1100, cf=0 HI-vaihteen jälkeen: HI=0011, MED=0011, LO=1100, cf=0 MED-siirron jälkeen: HI=0011, MED=0001, LO=1100, cf=1 LO-siirron jälkeen: HI=0011, MED=0001, LO=1110, cf=0Lippurekisterin yli 1 bitin siirtymiä ei käytännössä käytetä.