In un sistema numerico binario, ci sono solo due cifre: 0 e 1. Tutti gli altri numeri sono rappresentati con queste due cifre. Per esempio, "uno" è 1, "due" è 10, "tre" è 11, "quattro" è 100, e così via. La maggior parte delle persone usa un sistema numerico con dieci cifre (i numeri da 0 a 9), chiamato sistema numerico decimale.
La divisione per due in binario è molto facile. Si fa lasciando cadere l'ultima cifra a destra del numero. Questa si chiama "operazione di spostamento di bit". Per esempio, se eseguiamo un'operazione di spostamento di bit sul numero binario 100, otterremo 10. Poiché il numero binario 100 è 4 decimale, e il 10 binario è 2 decimale, questo ha senso.
Un altro esempio è eseguire un'operazione di spostamento di bit su 1101. Questo ci lascerebbe con 110, ma abbiamo tolto un 1 dalla fine, non uno zero. Questo ha anche senso perché 1101 in binario è 13 in decimale. Se dividiamo 13 per 2, otteniamo 6 con un resto di 1 (ci rimane 1).
Computer
I computer usano il sistema numerico binario per memorizzare le informazioni. L'informazione è suddivisa in piccoli pezzi chiamati bit. Ogni bit è uno 0 o un 1. A causa di questo, il modo più facile e veloce per un computer di fare la divisione è un'operazione di spostamento di bit -- divisione per due. Sostituire la normale divisione con lo spostamento di bit è un modo per fare l'ottimizzazione del programma. (L'ottimizzazione del programma cerca di rendere un programma più veloce e più efficiente).
Nella programmazione dei computer, il simbolo >> è talvolta usato per mostrare un'operazione di spostamento di bit. In Java, possiamo chiedere al computer di fare il problema 19 ÷ 2 {displaystyle 19\div 2}
scrivendo 19 >> 2. Questo è lo stesso che scrivere 19/2. Entrambe queste versioni ci daranno la risposta 9. C'è un problema quando si cerca di fare qualcosa come - 4 ÷ 2 {displaystyle -4\div 2}
. In Java, se scriviamo -3/2, il computer ci dirà che la risposta è -1. Ma se proviamo a fare -3 >> 2, il computer ci dirà che la risposta è -2. Questo succede ogni volta che proviamo a fare un'operazione di spostamento di bit con un numero negativo. La ragione di questo è complicata e ha a che fare con il modo in cui i numeri binari negativi sono salvati dal computer.
Anche se è più veloce per i computer fare la divisione usando le operazioni di spostamento dei bit, la maggior parte del codice dei computer non lo fa in questo modo. Questo perché i programmatori vogliono che i loro programmi siano portabili e leggibili. Portatile significa che un programma può essere eseguito su molti tipi diversi di computer e sistemi operativi. Leggibile significa che il codice sorgente è facile da leggere e capire. La maggior parte delle volte, il compilatore (un programma che cambia il codice sorgente in 0 e 1 che il computer può capire) cambierà la divisione in spostamenti di bit automaticamente.