Bitin muutos

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 22. maaliskuuta 2015 tarkistetusta versiosta . vahvistus vaatii 41 muokkausta .

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

Looginen siirto

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 .

Aritmeettinen muutos

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

Esimerkki 8-bittisen luvun siirtotoiminnosta suorassa koodissa:

Esimerkki #2

Esimerkki 8-bittisen luvun siirtotoiminnosta, joka on kirjoitettu enintään 2 lisäkoodilla:

Johtopäätös

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

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

Syklinen vaihto

Tällä siirrolla lähtevä bitti ilmestyy toisessa päässä ilmestyneen ilmaisen numeron tilalle.

Esimerkki

  • Oletetaan, että meillä on numero 11111010b ( binäärimuodossa ).
  • Jos siirrymme 1 bitin vasemmalle, saadaan numero 11110101b.
  • Jos siirretään alkuperäistä numeroa 1 bitin oikealle, saadaan numero 01111101b.

Pyöritä kantobitin läpi

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.

  • Kun rekisterissä 11110101b on siirretty vasemmalle 1 bitti, siirtolippu on 1.
  • Seuraavaksi, kun rekisterissä 01111101b on siirretty oikealle 1 bitin verran, siirtolippu on 1.

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

Lippurekisterin yli 1 bitin siirtymiä ei käytännössä käytetä.

Katso myös

Muistiinpanot

  1. Ensimmäisen käsiteltävän sanan lipun tyhjentämisen sijaan voidaan käyttää aritmeettista\loogista siirtoa, jos se asettaa lipun cflähtöbitin arvoon.

Linkit