Hvad er en aritmetisk forskydning?
Et aritmetisk skift er en måde at multiplicere eller dele tal på. Aritmetiske skift udføres typisk på binære tal. Konceptet gælder dog for ethvert nummerplan.
Det følgende er et eksempel med decimaltal, der har ti som base. Når 250 forskydes aritmetisk til venstre, er det resulterende antal 2500, hvilket er 250 ganget med ti. Når 250 repræsenteret ved hjælp af 4 cifre som 0250, forskydes aritmetisk til højre, er det resulterende antal 0025, som er 250 divideret med ti. Så det er mere korrekt at sige, at et aritmetisk skift er en måde at multiplicere eller dividere tal med basis af talskemaet.
Binære tal har 2 som base; de er repræsenteret ved hjælp af 0'er og 1'er og kan underskrives eller ikke signeres. I et aritmetisk venstre skift forskydes numrene med et mellemrum til venstre med nul placeret til højre. I et aritmetisk højre skift forskydes numrene med et mellemrum til højre, hvor det venstre nummer bevares til venstre. Generelt kan et skift være for "n" mellemrum.
I ikke-underskrevne binære tal er hver position en magt på 2, så binær 1 er decimal 1, binær 10 er decimal 2, binær 100 er decimal 4 og så videre. Så 0110 er decimal 6. Når der udføres et aritmetisk venstre skift, er det resulterende tal 1100, hvilket er decimal 12. Når et aritmetisk højre skift udføres, er det resulterende tal 0011, der er decimal 3.
Da tal kan være både positive og negative, anvendes underskrevne binære tal, hvor den venstre bit er 0 for et positivt tal eller nul, og 1 for et negativt tal. For 4-bitnumre er 0111, der er decimal 7, det største positive antal. Det skema, der oftest bruges til negative tal, har 1111 som decimal -1, og dette går helt ned til 1000, hvilket er decimaler -8.
Et aritmetisk venstre skift på 1101, som for eksempel er decimal 3, resulterer i 1010, hvilket er decimal -6. Et aritmetisk højre skift på 1010, som er decimal -6, resulterer i 1101, hvilket er decimal 3. Bemærk, at den venstre bit er bevaret.
Et aritmetisk skift svarer ikke altid til multiplikation og opdeling for hvert nummer i talskemaet. Der er begrænsninger i begge ender af nummerskemaet. For eksempel giver det venstre skift på 0111, decimal 7, decimal -2, og, højre skift på 1111, decimal -1, giver decimal -1.
Et aritmetisk skift har en iboende enkelhed, og et skift er meget hurtigere at udføre end normal multiplikation og opdeling. Så computere understøtter denne operation ved hjælp af en relativt simpel mekanisme kaldet en skiftenhed eller skiftregister. Kyndige programmerere bruger denne operation, så længe de ovennævnte begrænsninger enten undgås eller bliver taget hånd om.