Operazioni fra numeri binari

Come nel sistema decimale, anche nel sistema binario è possibile effettuare operazioni fra numeri.

Somma binaria:





Pasted image 20230303141756.png

Moltiplicazione binaria per 2: per ottenere i risultati dei decimali in binari usiamo la tabella di conversione.
Pasted image 20230303134322.png

Le regole per la moltiplicazione sono le stesse dei numeri decimali:
Continuiamo:

Notiamo che ogni volta che si moltiplica per 2, si aggiunge uno 0 al numero binario che viene moltiplicato. Questo è quello che avviene anche nel sistema decimale quando si moltiplica un numero per 10.

Moltiplicando un numero per la sua base si ottiene il numero che viene moltiplicato con l'aggiunta di uno 0. Questa operazione viene detta shift a sinistra
Pasted image 20230303142929.png


Vale la stessa regola (opposta) per la divisione intera (non decimale): in questo caso abbiamo uno shift a destra.
Pasted image 20230303143007.png

In matematica binaria usando un certo numero di bit sono rappresentabili solo un range di numeri e non tutti.
In decimale, per esempio, usando una cifra sono rappresentabili i numeri da 0 a 9. Usando una due cifre, i numeri da 0 a 99: lo stesso vale in binario.
Usando una cifra sono rappresentabili i numeri da 0 a 1.
Usando due cifre sono rappresentabili: 00, 01, 10, 11, rispettivamente 0, 1, 2, 3.
Usando due bit sono rappresentabili numeri, .
La regola generale è che usando bit sono rappresentabili numeri binari, il cui valore minimo è 0, e il cui valore massimo è . (Questo vale per ogni base)

Ci rendiamo facilmente conto che utilizzando tre bit, possiamo rappresentare i numeri da 0 a 7. E che la somma tra 6 e 3 (in binario) non è più rappresentabile con 3 bit, ma è necessario avere un altro bit per la rappresentazione. Questo situazione, in cui la rappresentazione di un numero eccede per numero di bit necessari per la sua rappresentazione si chiama overflow. Questo avviene anche nei numeri decimali. Con 2 cifre sono rappresentabili i numeri che vanno da 0 a 99. Facendo la somma 99 + 1, si ottiene 100, che richiede un altra cifra per la sua rappresentazione.
In un contesto in cui si ha overflow, alcune proprietà non valgono più:

  • Associativa:
    (100 + 999) - 980: darà un risultato inconsistente, poichè 100 + 999 non è rappresentabile con 3 cifre: 100 + 999 = 1099, usando solo 3 cifre, si ha 099 che poi viene sottratto di 980;
    mentre 100 + (999 - 980): darà un risultato consistente.
  • Distributiva:
    : darà come risultato 1000 - 500, ma mille con tre cifre sarebbe 000, che sottratto di 500 dà un risultato non consistente;
    mentre : restituisce 50 moltiplicato a 10 = 500, che è corretto.

NOTA: nella matematica decimale, l'overflow non è un problema, perchè i calcoli vengono effettuati da un essere umano che possono aggiungere quante cifre sono necessarie per la rappresentazione. Un calcolatore che funzione con un certo numero di bit, ovviamente, non può aggiungere più bit di quanti ne ha effettivamente a disposizione, per questo nella matematica tradizionale l'overflow non è un problema. Diventa un problema quando è applicato a dei calcolatori.

Usando quattro bit, possiamo rappresentare i numeri da 0 a . La rappresentazione usando un numero fissato di bit può essere considerata come un cerchio di questo tipo:
Pasted image 20230306114919.png
Questo cerchio rappresenta la somma tra 9 e 5, il cui risultato è 14. Ma se si effettuasse la somma tra 9 e 11?
Pasted image 20230306115052.png
9 = 1001
11 = 1011
Risultato = 10100
L'uno più a sinistra è in overflow.
Il risultato considerato dal calcolatore sarebbe 0100, che è 4 e sarebbe errato.
L'overflow è un problema che le architetture si portano dietro da sempre e che al momento non è stato risolto e che sembra non essere risolvibile.

In matematica binaria ci si è posti, ad un certo punto anche il problema della rappresentazione dei numeri positivi e negativi, quindi di numeri con segno: