Hva er en aritmetisk skift?
Et aritmetisk skifte er en måte å multiplisere eller dele tall på. Aritmetiske skift utføres vanligvis på binære tall. Konseptet gjelder imidlertid for alle nummereringsplaner.
Følgende er et eksempel med desimaltall som har ti som base. Når 250 er aritmetisk forskjøvet til venstre, er det resulterende tallet 2500, som er 250 multiplisert med ti. Når 250 er representert ved å bruke 4 sifre som 0250, er aritmetisk forskjøvet til høyre, er det resulterende tallet 0025, som er 250 delt med ti. Så det er riktigere å si at et aritmetisk skifte er en måte å multiplisere eller dele tall på med basis i tallopplegget.
Binære tall har 2 som base; de er representert ved å bruke 0s og 1s, og kan signeres eller ikke signeres. I et aritmetisk venstre skift forskyves tallene med ett mellomrom til venstre med null plassert til høyre. I et aritmetisk høyre skift forskyves tallene med ett mellomrom til høyre med det venstre nummeret beholdt til venstre. Generelt kan et skifte være for "n" mellomrom.
I usignerte binære tall er hver posisjon en styrke på 2, så binær 1 er desimal 1, binær 10 er desimal 2, binær 100 er desimal 4, og så videre. Så 0110 er desimal 6. Når et aritmetisk venstre skift utføres, er det resulterende tallet 1100 som er desimal 12. Når et aritmetisk høyre skifte utføres, er det resulterende tallet 0011 som er desimal 3.
Siden tall kan være både positive og negative, brukes signerte binære tall der den venstre biten er 0 for et positivt tall eller null, og 1 for et negativt tall. For 4-bitstall er 0111, som er desimal 7, det største positive tallet. Opplegget som oftest brukes for negative tall har 1111 som desimal -1, og dette går helt ned til 1000, som er desimal -8.
Et aritmetisk venstre skifte på 1101, som for eksempel er desimal -3, resulterer i 1010, som er desimal -6. Et aritmetisk høyre skifte på 1010, som er desimal -6, resulterer i 1101, som er desimal -3. Legg merke til at den venstre biten beholdes.
Et aritmetisk skifte tilsvarer ikke alltid multiplikasjon og inndeling for hvert nummer i tallopplegget. Det er begrensninger i hver ende av tallordningen. For eksempel gir det venstre skiftet 0111, desimalt 7, desimalt -2, og det høyre skiftet på 1111, desimalt -1, gir desimalt -1.
Et aritmetisk skifte har en iboende enkelhet og et skifte er mye raskere å utføre enn vanlig multiplikasjon og inndeling. Så datamaskiner støtter denne operasjonen ved å bruke en relativt enkel mekanisme som kalles en skifteenhet eller skiftregister. Kyndige programmerere bruker denne operasjonen så lenge begrensningene nevnt ovenfor enten blir unngått eller ivaretatt.