Bitskifte

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 22 mars 2015; verifiering kräver 41 redigeringar .

Bitskifte  - ändra positionen för bitar i ett maskinord .

De flesta datorer kan inte direkt adressera bitar som finns i grupper om 8, 16, 32 eller 64 bitar i ett maskinord . Det finns många maskininstruktioner för att stödja bitsmanipulation , inklusive olika typer av skift. Alla skift liknar varandra i beteendet hos mellanbitarna, som helt enkelt flyttas åt vänster eller höger med en viss mängd. Men beteendet hos kantbitarna som lämnar ordet och som förekommer i ordet beror på typen av skift.

Inom elektronik utförs bitskift på skiftregister .

Logiskt skift

Ett skifte där den utgående biten försvinner utan att påverka de återstående bitarna, och bit 0 skrivs i stället för den visade biten .

Ett exempel på hur skiftoperationen fungerar:

I de flesta processorer lagras den utgående biten i bärflaggan . Den här funktionen används ofta när du arbetar med flerbytenummer .

Aritmetiskt skift

I det här skiftet behandlas ordet inte bara som en grupp av bitar, utan som ett tvåkomplement heltal . När den skiftas åt vänster beter den sig som en logisk växling, när den skiftas åt höger försvinner den utgående biten utan att påverka de återstående bitarna, och biten som motsvarar tecknet sätts i stället för den visade biten.

Exempel #1

Ett exempel på skiftoperationen av ett 8-bitars nummer i en direktkod:

Exempel #2

Ett exempel på skiftoperationen av ett 8-bitars nummer skrivet i ytterligare upp till 2 kod:

Slutsats

Det är lätt att se att med ett aritmetiskt skifte motsvarar ett vänsterskift multiplikation med 2, och ett högerskift motsvarar division med 2 (i det allmänna fallet, till basen i talsystemet) avrundat till −∞. Till exempel:

1011 = -5 1111 = -1 >>a1 >>a1 ---- ---- 1101 = -3 1111 = -1

Kretsimplementeringen av skiftoperationer är mycket enkel. Det är därför dessa operationer rekommenderas att användas för operationer med multiplikation och division av heltal med tal lika med potensen 2 (2, 4, 8, 16, 32, 64, etc.) - såvida inte, naturligtvis, sådan avrundning negativa tal stör inte.

Cyklisk växling

Med detta skift visas den utgående biten i stället för det lediga numret som dök upp i andra änden.

Exempel

  • Låt oss säga att vi har talet 11111010b (i binär ).
  • Om vi ​​flyttar vänster med 1 bit får vi talet 11110101b.
  • Om vi ​​flyttar det ursprungliga talet åt höger med 1 bit får vi talet 01111101b.

Rotera genom bärbiten

Arkitekturen för många processorer inkluderar en bärflagga (till exempel cfpå x86 ). Denna operation utför en rotation på ( n +1)-bitnumret, bestående av ett register och en bärflagga.

Till exempel, om vi har numret 11111010b i registret, är den cykliska växlingsflaggan åt höger 0.

  • Efter att ha flyttats åt vänster med 1 bit i register 11110101b är bärflaggan 1.
  • Därefter, efter att ha skiftat åt höger med 1 bit i register 01111101b, är bärflaggan 1.

Bärbitrotationsoperationen används när man arbetar med multibytenummer . I synnerhet, för att högerskifta ett långt nummer med 1, rensa [1] cf (vid en signerad division, skriv den till cfhögordningens bit av högordningens ord) och rotera med ett genom cfvarje ord, med början från toppen. Låt oss till exempel säga att vi har numret 011000111100b som spänner över tre 4-bitars ord:

Var: HI=0110, MED=0011, LO=1100, cf=0 Efter HI-skift: HI=0011, MED=0011, LO=1100, cf=0 Efter MED-skift: HI=0011, MED=0001, LO=1100, cf=1 Efter LO-skift: HI=0011, MED=0001, LO=1110, cf=0

Förskjutningar genom flaggregistret med mer än 1 bit används praktiskt taget inte.

Se även

Anteckningar

  1. Istället för att rensa flaggan för det första ordet som ska bearbetas, kan en aritmetisk\logisk förskjutning användas om den sätter flaggan till cfvärdet för utmatningsbiten.

Länkar