Codifica in Modulo e Segno
Attraverso la codifica naturale si possono rappresentare tutti i numeri positivi compreso lo zero. Per rappresentare i numeri negativi si può utilizzare la codifica in modulo e segno. Questa codifica si caratterizza dall’essere un codice a lunghezza fissa. L’idea alla base di questa codifica consiste nell’utilizzare gli stessi alfabeti di partenza analizzati per la codifica naturale senza aggiungere ulteriori simboli per la rappresentazione del segno.
Dato $n \in \N$ la lunghezza delle parole di codice, sia $P = a_{n-1}…a_{1}a_{0}$ con $a_i$ e $i \in [0, n-1]$ uno qualsiasi dei simboli di un dato alfabeto $A$. Il simbolo $a_{n-1}$ rappresenta il segno mentre i restanti simboli rappresentano il modulo del numero. $a_{n-1}$ è vincolato ad assumere come valore $0$ o il valore $b-1$ dove $b$ è la base scelta per la codifica. Se $a_{n-1}$ assume valore $0$ allora il numero è positivo altrimenti è negativo.
Ad esempio, si vuole rapprenstare il numero cinque con $n = 4$. In codifica modulo e segno in base 2 avremo:
$P = 0101$.
Se si vuole rapprenstare il numero meno cinque avremo:
$P = 1101$.
È evidente che la codifica non è univoca poichè lo zero può essere rappresentato sia con la parola di codice $P = 000…0$ che con la parola di codice $P = 100…0$.
Codifica in Complemento alla Base
La codifica in complemento alla base è una codifica a lunghezza fissa che permette di rappresentare numeri interi con segno. Sia $x_b$ il valore espresso in base $b$. Il corrispondente negativo si ottine dalla formula:
$-x_b = b^n\ \ -\ \ x_b$ .
Infatti:
$x_b\ \ +\ \ -x_b = x_b\ \ +\ \ b^n\ \ -\ \ x_b = b^n = 0$ .
La rappresentazione dello zero in questo caso è univoca ma la cifra più significativa non è sempre indicativa del segno come nel caso della codifica in modulo e segno.
Un caso a parte si verifica quando la base in cui si opera è la base 2. In questo caso la cifra più significativa è indicativa del segno.
Si vuole ora rapresentare il numero cinque con $n = 4$. Il valore positivo si esprime semplicemente utilizzando la codifica naturale. Si ha quindi che $P = 0101$. Per ottenere il negativo applichiamo la formula precedente e si ottiene così:
$-0101 = 1000\ \ -\ \ 0101 = 1011$ .
Lo stesso risultato si può ottenere complementando i bit e sommando 1. La regola è valida solo per la base 2 e in questa base la codifica prende il nome di codifica in complemento a 1.
Codifica in Complemento alla Base Diminuita
La codifica in complemento alla base diminuita è un ulteriore codifica che consente di rappresnetare i numeri relativi. I principi alla base sono gli stessi della codifca in complemento alla base con una differenza, per ottenere il valore negativo si applica la formula:
$-x_b = b^n\ \ -\ \ 1\ \ -\ \ x_b$ .
In questo caso la cifra più significativa è sempre indicativa del segno ma lo zero ha una rapprenstazione non univoca.
Nel caso della base 2 lo zero può essere rappresentato equivalentemente con $P = 00…0$ o $P = 11…1$.
Per ottenere la rappresentazione negativa di un numero si possono semplicemente complementare tutti i bit senza applicare la formula precedente.
Si vuole ora rappresentare il numero cinque con $n = 4$. Il valore positivo si esprime semplicemente utilizzando la codifica naturale. Si ha quindi che $P = 0101$. Per ottenere il negativo applichiamo la formula precedente e si ottiene così:
$-0101 = 1000\ \ -\ \ 1\ \ -\ \ 0101 = 1010$ .
Questa è la codifica utilizzata nei calcolatori per rapprenstare i numeri relativi e prende anche il nome di codifica in complemento a 2.
Esercizi
- Rappresentare i seguenti numeri in base 10 in codifica modulo e segno con $n = 6$
- 0
- 1
- 2
- -2
- -3
- 12
- -13
- -512
- Rappresentare i seguenti numeri in base 10 in codifica in complemento alla base con $n = 6$
- 0
- 1
- 2
- -2
- -3
- 12
- -13
- -512
- Rappresentare i seguenti numeri in base 10 in codifica in complemento alla base diminuita con $n = 6$
- 0
- 1
- 2
- -2
- -3
- 12
- -13
- -512