Co je aritmetický posun?
Aritmetický posun je způsob, jak násobit nebo dělit čísla. Aritmetické posuny se obvykle provádějí na binárních číslech. Tento koncept je však použitelný na jakékoli schéma číslování.
Následuje příklad použití desítkových čísel, která mají deset jako základ. Když je 250 aritmeticky posunut doleva, výsledné číslo je 2500, což je 250 násobeno deseti. Když je 250 reprezentováno pomocí 4 číslic jako 0250, aritmeticky posunuto doprava, výsledné číslo je 0025, což je 250 děleno deseti. Je tedy správnější říci, že aritmetický posun je způsob, jak vynásobit nebo rozdělit čísla základem číselného schématu.
Binární čísla mají 2 jako základ; jsou zastoupeny pomocí 0s a 1s a mohou být podepsány nebo nepodepsány. V aritmetickém posunu doleva jsou čísla posunuta o jeden prostor doleva, přičemž nula je umístěna napravo. V aritmetickém pravém posunu jsou čísla posunuta o jeden prostor doprava, přičemž číslo vlevo zůstane vlevo. Obecně může být posun o mezery „n“.
U nepodepsaných binárních čísel je každá pozice mocninou 2, takže binární 1 je desítkové číslo 1, binární 10 je desetinné číslo 2, binární 100 je desetinné číslo 4 a tak dále. Takže 0110 je desetinné číslo 6. Když je proveden aritmetický posun doleva, výsledné číslo je 1100, což je desetinné číslo 12. Když je proveden aritmetický posun doprava, výsledné číslo je 0011, což je desetinné číslo 3.
Protože čísla mohou být jak kladná, tak záporná, používají se podepsaná binární čísla, kde bit zcela vlevo je 0 pro kladné číslo nebo nula a 1 pro záporné číslo. Pro 4bitová čísla je tedy 0111, což je desetinné číslo 7, největší kladné číslo. Schéma, která se nejčastěji používá pro záporná čísla, má 1111 jako desítkové -1 a to jde až na 1000, což je desetinné -8.
Například aritmetický posun doleva na 1101, který je desetinný -3, vede k 1010, což je desetinný -6. Aritmetický posun doprava na 1010, který je desetinný -6, má za následek 1101, což je desetinné -3. Všimněte si, že bit vlevo je zachován.
Aritmetický posun neodpovídá vždy násobení a dělení pro každé číslo v číselném schématu. Na obou stranách schématu čísel jsou omezení. Například levý posun 0111, desítkové číslo 7, udává desítkové -2, a pravý posun 1111, desetinné -1, udává desítkové -1.
Aritmetický posun má vlastní jednoduchost a posun je mnohem rychlejší než normální násobení a dělení. Počítače tak tuto operaci podporují pomocí relativně jednoduchého mechanismu nazývaného posuvná jednotka nebo posuvný registr. Pečliví programátoři tuto operaci využívají, pokud se výše uvedeným omezením buď vyhneme, nebo se o ně postarají.