Co to jest przesunięcie arytmetyczne?
Przesunięcie arytmetyczne to sposób mnożenia lub dzielenia liczb. Przesunięcia arytmetyczne są zwykle wykonywane na liczbach binarnych. Ta koncepcja ma jednak zastosowanie do każdego schematu numeracji.
Poniżej podano przykład wykorzystujący liczby dziesiętne, które mają dziesięć jako podstawę. Gdy 250 jest arytmetycznie przesunięte w lewo, wynikowa liczba wynosi 2500, co jest 250 pomnożone przez dziesięć. Gdy 250 reprezentowane za pomocą 4 cyfr jako 0250, jest arytmetycznie przesunięte w prawo, wynikowa liczba to 0025, która jest 250 podzielona przez dziesięć. Bardziej słuszne jest zatem stwierdzenie, że przesunięcie arytmetyczne to sposób mnożenia lub dzielenia liczb przez podstawę schematu liczbowego.
Liczby binarne mają 2 jako podstawę; są reprezentowane za pomocą zer i jedynek i mogą być podpisane lub niepodpisane. W arytmetycznym przesunięciu w lewo liczby są przesuwane o jedną spację w lewo, a zero jest umieszczane po prawej stronie. W arytmetycznym przesunięciu w prawo liczby są przesuwane o jedną spację w prawo, a ostatnia liczba w lewo jest zachowywana w lewo. Ogólnie rzecz biorąc, przesunięcie może dotyczyć spacji „n”.
W liczbach binarnych bez znaku każda pozycja ma potęgę 2, więc binarny 1 to dziesiętny 1, binarny 10 to dziesiętny 2, binarny 100 to dziesiętny 4 i tak dalej. Tak więc 0110 ma wartość dziesiętną 6. Gdy przeprowadzane jest arytmetyczne przesunięcie w lewo, wynikowa liczba to 1100, która jest dziesiętna 12. Gdy przeprowadzane jest arytmetyczne przesunięcie w prawo, wynikiem jest 0011, która jest dziesiętna 3.
Ponieważ liczby mogą być zarówno dodatnie, jak i ujemne, stosowane są liczby binarne ze znakiem, w których najbardziej lewy bit to 0 dla liczby dodatniej lub zero i 1 dla liczby ujemnej. Zatem dla liczb 4-bitowych 0111, co jest liczbą dziesiętną 7, jest największą liczbą dodatnią. Schemat najczęściej używany dla liczb ujemnych ma 1111 jako dziesiętne -1, a to sięga aż do 1000, czyli dziesiętnie -8.
Na przykład arytmetyczne przesunięcie w lewo na 1101, które jest dziesiętne -3, daje 1010, które jest dziesiętne -6. Arytmetyczne przesunięcie w prawo na 1010, które jest dziesiętne -6, powoduje 1101, który jest dziesiętny -3. Zauważ, że zachowany jest lewy bit.
Przesunięcie arytmetyczne nie zawsze odpowiada mnożeniu i dzieleniu dla każdej liczby w schemacie liczb. Istnieją ograniczenia na obu końcach schematu liczbowego. Na przykład lewe przesunięcie 0111, dziesiętne 7, daje dziesiętne -2, a prawe przesunięcie 1111, dziesiętne -1, daje dziesiętne -1.
Przesunięcie arytmetyczne ma naturalną prostotę, a przesunięcie jest znacznie szybsze niż zwykłe mnożenie i dzielenie. Komputery obsługują tę operację za pomocą stosunkowo prostego mechanizmu zwanego jednostką przesuwną lub rejestrem przesuwnym. Doświadczeni programiści korzystają z tej operacji, o ile wspomniane wyżej ograniczenia są albo omijane, albo eliminowane.