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

  1. Rappresentare i seguenti numeri in base 10 in codifica modulo e segno con $n = 6$
  • 0
  • 1
  • 2
  • -2
  • -3
  • 12
  • -13
  • -512
  1. Rappresentare i seguenti numeri in base 10 in codifica in complemento alla base con $n = 6$
  • 0
  • 1
  • 2
  • -2
  • -3
  • 12
  • -13
  • -512
  1. 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