Che cos'è uno spostamento aritmetico?
Uno spostamento aritmetico è un modo per moltiplicare o dividere i numeri. I turni aritmetici sono in genere eseguiti su numeri binari. Il concetto, tuttavia, è applicabile a qualsiasi schema di numerazione.
Di seguito è riportato un esempio che utilizza numeri decimali che hanno dieci come base. Quando 250 viene spostato aritmeticamente a sinistra, il numero risultante è 2500, che viene 250 moltiplicato per dieci. Quando 250 rappresentato usando 4 cifre come 0250, viene spostato aritmeticamente verso destra il numero risultante è 0025, che è 250 diviso per dieci. Quindi è più corretto affermare che uno spostamento aritmetico è un modo di moltiplicare o dividere i numeri per la base dello schema numerico.
I numeri binari hanno 2 come base; sono rappresentati usando 0 e 1 e possono essere firmati o non firmati. In uno spostamento aritmetico a sinistra, i numeri vengono spostati di uno spazio a sinistra con zero posizionato a destra. In uno spostamento aritmetico a destra, i numeri vengono spostati di uno spazio a destra con il numero più a sinistra mantenuto a sinistra. In generale, uno spostamento può essere per "n" spazi.
Nei numeri binari senza segno, ogni posizione è una potenza di 2, quindi il binario 1 è decimale 1, il binario 10 è decimale 2, il binario 100 è decimale 4 e così via. Quindi 0110 è decimale 6. Quando viene eseguito uno spostamento a sinistra aritmetico, il numero risultante è 1100 che è decimale 12. Quando viene eseguito uno spostamento a destra aritmetico, il numero risultante è 0011 che è decimale 3.
Poiché i numeri possono essere sia positivi che negativi, vengono utilizzati numeri binari con segno in cui il bit più a sinistra è 0 per un numero positivo o zero e 1 per un numero negativo. Pertanto, per i numeri a 4 bit, 0111, che è il decimale 7, è il numero positivo più grande. Lo schema più spesso usato per i numeri negativi ha 1111 come -1 decimale e questo scende fino a 1000, che è decimale -8.
Uno spostamento aritmetico a sinistra su 1101, ad esempio, che è decimale -3, si traduce in 1010, che è decimale -6. Uno spostamento aritmetico a destra su 1010, che è decimale -6, risulta in 1101, che è decimale -3. Si noti che il bit più a sinistra viene mantenuto.
Uno spostamento aritmetico non corrisponde sempre alla moltiplicazione e alla divisione per ogni numero nello schema numerico. Vi sono limitazioni alle due estremità dello schema numerico. Ad esempio, lo spostamento sinistro di 0111, il decimale 7, indica il decimale -2 e lo spostamento destro di 1111, il decimale -1, indica il decimale -1.
Uno spostamento aritmetico ha una semplicità intrinseca e uno spostamento è molto più rapido da eseguire rispetto alla normale moltiplicazione e divisione. Quindi i computer supportano questa operazione usando un meccanismo relativamente semplice chiamato unità shift o registro shift. I programmatori esperti utilizzano questa operazione fintanto che le limitazioni sopra menzionate vengono o evitate o risolte.