Bitskifting

I datamaskiner er bitskifting en operasjon som kan utføres på et ord. Den flytter alle bitverdiene én eller flere plasser til høyre eller venstre. Man skiller mellom flere forskjellige typer bitskifting ut fra hvordan man fyller på nye bitverdier en den enden man skifter fra og til en hvis grad hvor det blir av bitverdiene som forsvinner utenfor enden man skifter mot.

Logisk skiftingRediger

 
Logisk skifting til høyre
 
Logisk skifting til venstre

Ved logisk skifting fyller man på med 0 i den enden man skifter fra. Bitverdien som forsvinner ut i enden blir enten forkastet eller lagret i et statusregister. For tall som kun er positive vil skifting mot venstre eller høyre med n plasser tilsvare henholdsvis multiplikasjon og divisjon med 2n.

Aritmetisk skiftingRediger

 
Aritmetisk skifting til høyre
 
Aritmetisk skifting til venstre

Ved aritmetisk skifting fyller man på med 0 i høyre ende dersom man skifter mot venstre. Hvis man derimot skifter mot høyre fyller man på med fortegnsbiten til venstre. På den måten bevarer man fortegnet til den verdien man utfører operasjonen på. Dersom negative tall representeres med toerkomplement, vil skifting mot venstre eller høyre med n plasser tilsvare henholdsvis multiplikasjon og divisjon med 2n (hvor resultatet rundes av mot −∞).

Sirkulær skiftingRediger

 
Sirkulær skifting mot høyre
 
Sirkulær skifting mot venstre
 
Sirkulær skifting til høyre gjennom mente
 
Sirkulær skifting til venstre gjennom mente

Ved sirkulær skifting lar man bitverdien som blir skjøvet utfor den ene enden komme tilbake igjen på den andre siden. I en variant av sirkulær skifting introduserer man enda en bitpositsjon, typisk menteregisteret. Bitverdien som blir skiftet ut av ordet havner i menteregisteret, men den forrige verdien av menteregisteret skiftes inn i den andre enden.