Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Codifica dei numeri in base 2, Schemi e mappe concettuali di Fondamenti di informatica

In questo documento viene spiegato come convertire un numero da base 10 a base 2/16 e viceversa + complemento a due/uno + codifica gray + codifica in virgola fissa e mobile + diversi esercizi di consolidamento

Tipologia: Schemi e mappe concettuali

2019/2020

Caricato il 07/11/2021

andrea-de-dominicis
andrea-de-dominicis 🇮🇹

5

(2)

8 documenti

1 / 51

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Informatica: Scienza dell’elaborazione dell’informazione (trasformazione dell’informazione) attraverso
elaboratori elettronici.
In questa definizione ci sono 3 concetti:
Rappresentazione dell’informazione;
Descrizione del processo di elaborazione (ovvero si indica l’operazione da fari sui dati);
Costruzione di un elaboratore elettronico in grado di eseguire il processo di elaborazione
(hardware).
ELABORATORE ELETTRONICO: dispositivo elettronico in grado di eseguire un processo di
trasformazione/elaborazione dell’informazione.
I dispositivi elettronici si dividono in due categorie:
Dispositivi EMBEDDED: il dispositivo è costruito per eseguire un determinato processo di
elaborazione (possono svolgere anche operazioni complesse);
Dispositivi PROGRAMMABILI: il dispositivo è in grado di eseguire un processo di
elaborazione definito dall’utente, l’elettronica è costruita in modo che possa eseguire le operazioni
più semplici possibili, l’utente finale ha la possibilità di comporre queste operazioni semplici in
modo da far svolgere al dispositivo operazioni più complesse:
ES. PC, Tablet, Smartphone.
Breve storia degli elaboratori
1642: Pascalina: In grado di eseguire meccanicamente addizioni e sottrazioni
1671: macchina di Leibniz: perfeziona la pascalina con la moltiplicazione
1871: Macchina analitica di Babbage
-Primo esempio di macchina programmabile
-Oltre agli operandi la macchina è in grado di ricevere in input la sequenza di operazioni
da svolgere attraverso schede perforate
Mai portata a termine sia a causa dei costi sia per la tecnologia meccanica inadeguata
1946: ENIAC
-Primo calcolatore digitale elettronico programmabile
-Segue l’architettura di Von Neumann
ARCHITETTURA DI VON NEUMANN
L’architettura di Von Neumann è l’architettura logica che tutti gli elaboratori elettronici attualmente seguono.
L’elaboratore deve essere costituito da:
Unità centrale di elaborazione CPU (Central Processing Unit) che a sua volta deve avere al suo interno:
Unità aritmetico logica
Unità di controllo
Registri, utilizzato per memorizzare gli operandi (chiamato anche accumulatore).
Memoria centrale;
Dispositivi di Input/Output;
Bus di interconnessione.
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33

Anteprima parziale del testo

Scarica Codifica dei numeri in base 2 e più Schemi e mappe concettuali in PDF di Fondamenti di informatica solo su Docsity!

Informatica : Scienza dell’elaborazione dell’informazione (trasformazione dell’informazione) attraverso

elaboratori elettronici. In questa definizione ci sono 3 concetti:  Rappresentazione dell’informazione;Descrizione del processo di elaborazione (ovvero si indica l’operazione da fari sui dati);  Costruzione di un elaboratore elettronico in grado di eseguire il processo di elaborazione (hardware).

ELABORATORE ELETTRONICO: dispositivo elettronico in grado di eseguire un processo di

trasformazione/elaborazione dell’informazione. I dispositivi elettronici si dividono in due categorie:

 Dispositivi EMBEDDED: il dispositivo è costruito per eseguire un determinato processo di

elaborazione (possono svolgere anche operazioni complesse);

 Dispositivi PROGRAMMABILI: il dispositivo è in grado di eseguire un processo di

elaborazione definito dall’utente, l’elettronica è costruita in modo che possa eseguire le operazioni più semplici possibili, l’utente finale ha la possibilità di comporre queste operazioni semplici in modo da far svolgere al dispositivo operazioni più complesse: ES. PC, Tablet, Smartphone.

Breve storia degli elaboratori

  • 1642: Pascalina : In grado di eseguire meccanicamente addizioni e sottrazioni
  • 1671: macchina di Leibniz : perfeziona la pascalina con la moltiplicazione - 1871: Macchina analitica di Babbage -Primo esempio di macchina programmabile -Oltre agli operandi la macchina è in grado di ricevere in input la sequenza di operazioni da svolgere attraverso schede perforate Mai portata a termine sia a causa dei costi sia per la tecnologia meccanica inadeguata - 1946 : ENIAC -Primo calcolatore digitale elettronico programmabile -Segue l’architettura di Von Neumann ARCHITETTURA DI VON NEUMANN L’architettura di Von Neumann è l’architettura logica che tutti gli elaboratori elettronici attualmente seguono. L’elaboratore deve essere costituito da:
  • Unità centrale di elaborazione CPU (Central Processing Unit) che a sua volta deve avere al suo interno: - Unità aritmetico logica
  • Unità di controllo
  • Registri , utilizzato per memorizzare gli operandi (chiamato anche accumulatore). **- Memoria centrale;
  • Dispositivi di Input/Output;
  • Bus di interconnessione.**

Il mondo esterno al nostro elaboratore viene rappresentato da Von Neumann con il nastro di lettura/scrittura. Sul nastro di lettura ci sono i dati iniziale che vengono dati dall’utente, i nastri inizialmente erano caratterizzati da una scheda perforata, adesso invece si usano dispositivi magnetoottici. I dati caricati sul nastro di lettura, vengono letti e tipicamente come prima operazione l’elaboratore carica in memoria i dati stessi. I nastri di scrittura servono per rappresentare il risultato finale da fornire all’utente. I nastri di lettura/scrittura possono essere più di uno. Chiaramente tutte queste componenti devono essere interconnessi: questo avviene grazie ai bus. L’architettura di Von Neumann trova un’applicazione immediata e diretta nelle architetture hardware dei nostri dispositivi. Possiamo pensare al dispositivo programmabile come la coppia CPU-MEMORIA dove la CPU ESEGUE DELLE OPERAZIONI PRELEVANDO GLI OPERANDI E L’OPERAZIONE DA ESEGUIRE DALLA MEMORIA CENTRALE. Questo è lo schema logico da tenere in mente quando si parla di dispositivo programmabile. ALGORITMO: un insieme di operazioni che devono essere seguite in un dato ordine al fine di risolvere il problema dato di tipo più complesso. Le operazioni elementari che possiamo utilizzare per definire il nostro algoritmo sono le istruzioni di base che il nostro dispositivo elettronico è in grado di eseguire direttamente in hardware, il costruttore delle CPU costruiscono l’hardware elettronico in grado di eseguire determinate operazioni, l’insieme di operazioni di base si chiama INSTRUCTION SET. L’ISTRUCTION SET sono l’insieme di istruzioni che il nostro dispositivo elettronico è in grado di eseguire perché il costruttore ha già costruito esso in grado di poter eseguire quel tipo di operazioni. Chiamata RAM

MULT xxx  moltiplica il valore dell’accumulatore con il valore nella cella xxx della memoria, il risultato è nell’accumulatore;  DIV xxx  divide il valore nell’accumulatore con il valore nella cella xxx della memoria, il risultato è nell’accumulatore.

Una macchina astratta è un INSIEME DI STRUTTURE DATI e di ISTRUZIONI.

Una macchina astratta può essere realizzata in due modi:  HARDWAREMolto efficiente;Poco flessibile come soluzione (perché non posso far evolvere il mio linguaggio a piacimento);  Per macchine complesse i costi possono essere molto alti.SIMULAZIONE SOFTWAREMeno efficiente;Costi ridotti (posso far evolvere il linguaggio a un livello più mantenendo i costi per l’hardware fissi). Dato un certo algoritmo A che si vuole eseguire sulla macchina M è necessario descrivere A utilizzando il linguaggio Lm eseguibile direttamente dalla macchina M. Gli approcci per passare da un linguaggio di livello più alto a un linguaggio di livello più basso possono essere di due tipi:  APPROCCIO INTERPRETATIVO : durante l’esecuzione del nostro programma scritto in L1 (scritto in un linguaggio più ad alto livello) viene effettuata l’interpretazione di ogni istruzione in una o più istruzioni in L0 (Phython, invece Java utilizza entrambi gli approcci: linguaggio intermedio o bytecode) -L’interpretazione introduce INEFFICIENZA durante l’esecuzione del programma; -L’interpretazione avviene ad ogni esecuzione del programma.

  • Portabile (Posso usare il programma su macchina con linguaggio macchina diversa a patto che l’interprete sia disponibile per quel dispositivo su cui vogliamo eseguire il programma)  APPROCCIO COMPILATIVO : prima dell’esecuzione del programma viene tradotto dal linguaggio ad alto livello a un linguaggio interpretabile ed eseguibile direttamente dalla macchina(C ):
  • La traduzione avviene solo una volta (quindi non si perde tempo a eseguire ogni volta l’interpretazione però se si devono eseguire delle modifiche sul linguaggio L1 bisogna eseguire di nuovo la compilazione) ;
  • Una volta tradotto si ottiene il programma in linguaggio macchina eseguibile direttamente dal nostro dispositivo elettronico;
  • Portabilità ridotta (nell’approccio compilativo si produce un programma meno portabile, nel caso in cui si voglia utilizzare il programma su una macchina con linguaggio macchina diverso, si deve obbligatoriamente eseguire la compilazione del programma nel linguaggio L0 del dispositivo elettronico su cui vogliamo eseguire la portabilità)

RAPPRESENTARE L’INFORMAZIONE ovvero descrivere un oggetto (astratto o concreto) attraverso l’uso di un simbolo o di una sequenza di simboli. Per rappresentare l’informazione si necessita di:  ALFABETO ovvero l’insieme di simboli che possiamo utilizzare per rappresentare l’informazione;  CODICE ovvero l’elenco di tutte le sequenze possibili che possiamo comporre utilizzando i simboli dell’alfabeto (Un codice è ammissibile per rappresentare l’informazione solo se la cardinalità dell’insieme del codice è maggiore o uguale alla cardinalità dell’insieme di oggetti che si vogliono rappresentare) (ATTENZIONE: il codice deve essere maggiore/uguale agli oggetti da rappresentare);  CODIFICA che indica l’associazione da una parola del codice e il suo significato o oggetto che vogliamo rappresentare. La rappresentazione di un oggetto può anche essere non univoca. La rappresentazione dell’informazione può essere fatta attraverso due tipi di codici:  CODICE A LUNGHEZA FISSA (la stragrande maggioranza dei dispositivi elettronici utilizzano dei codici a lunghezza fissa): in questo tipo di codice TUTTE LE PAROLE HANNO LA STESSA LUNGHEZZA n. Alcuni esempi di codice a lunghezza che si usano al di fuori del contesto informatico sono il codice fiscale (16 simboli) o il Codice IBAN;  CODICE A LUNGHEZZA VARIABILE (ambiti applicativi più di nicchia):

  • Le parole in questo tipo di codice possono avere lunghezza variabile ;
  • Una parola di codice non può comparire come prefisso di nessun’altra parola. Alcuni esempi di codice a lunghezza variabile possono essere il numero di telefono, il codice Morse, le diverse lingue. CODICE A LUNGHEZZA FISSA: Quante differenti parole si hanno nel codice in base alla lunghezza dell’alfabeto e di ogni parola? Sia A l’alfabeto ovvero l’insieme di simboli utilizzati nel codice con cardinalità K e n la lunghezza di ogni parola nel codice, il numero di differenti parole che possiamo avere si può calcolare attraverso questa formula: NUMERO DI PAROLE CHE POSSIAMO COMPORRE=M CARDINALITA’ DELL’INSIEME DELL’ALFABETO=K NUMERO DI CARATTERI DI OGNI PAROLA=n

M = K

n

D I QUANTI BIT HO BISOGNO PER RAPPRESENTARE UN CERTO NUMERO DI OGGETTI IN CODICE BINARIO?

Con questa formula possiamo andare a calcolare il numero di bit necessario per rappresentare un certo numero di oggetti: n=bit necessari N=oggetti che vogliamo rappresentare

n ≥ log 2 N

LA CODIFICA

Fissata opportunamente la lunghezza delle parole e avendo fissato il codice(dizionario), possiamo avere tante codifiche (le codifiche stabiliscono la relazione che c’è tra la rappresentazione e l’oggetto rappresentato, in altre parole è la convenzione che associa parola di codice ad oggetto e viceversa).

CODIFICHE RINDONDATI, AMBIGUE E BIUNIVOCA

Le codifiche possono essere:  RINDONDATI ovvero un solo oggetto può essere rappresentato da due o più parole, spesso vengono utilizzate nelle comunicazioni per evitare errori.  AMBIGUE : vengono chiamate così le codifiche dove una singola parola di codice viene associata a una o più oggetti, Le COFICHE AMBIGUE NON SONO PERMESSE NEI DISPOSITIVI ELETTRONICI , questo perché il dispositivo elettronico non riesce autonomamente a disambiguare la rappresentazione;  BIUNIVOCHE ovvero una codifica che permette di risalire dalla parola di codice all’oggetto rappresentato e viceversa.

Un calcolatore elettronico deve saper elaborare le seguenti informazioni:

Numeri naturali (unsigned integer);  Numeri relativi (integer);  Numeri reali (floating point);  Testo (characters);  Immagini;Suoni ;  Video. Tutte queste informazioni vengono ricondotte a delle parole composte da {0,1}.

NUMERI INTERI (NUMERI >= O)

Introduciamo la NUMERAZIONE POSIZIONALE (chiamata anche

CODIFICA NATURALE)

Nella numerazione posizionale l’alfabeto include un numero di simboli pari alla base di numerazione, per esempio:  Base 2 : i numeri sono rappresentati attraverso 2simboli {0,1};  Base 8 , i numeri sono rappresentati con 8 simboli : {0,1,2,3,4,5,6,7};  Base 16 : i numeri vengono rappresentati utilizzando 16 simboli {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}. Quindi in altre parole , la base è pari al numero di simboli che possiamo utilizzare per rappresentare quel numero (cardinalità dell’insieme dell’alfabeto). Tenendo conto della base utilizzata la sequenza di simboli può assumere valori diversi. Per calcolare il valore numerico in una base generica n di una sequenza di simboli si procedere nel seguente modo:

1. Assegniamo un numero che indichi la posizione di ogni simbolo , come nell’esempio:

3

2

1

0

4

3

2

1

0 Partendo da destra associamo un VALORE POSIZIONALE A OGNI CIFRA partendo da 0

2. Moltiplichiamo ogni singola cifra che compone la sequenza di simboli per la base elevato per **la sua posizione

  1. Sommiamo i valori ottenuti precedentemente** Facciamo ora un esempio, seguiamo passo i 3 punti e troviamo il valore numerico: La sequenza 354 in base 10: diamo dei VALORI POSIZONALI a ogni simbolo

2

1

0 Adesso moltiplichiamo ogni singola cifra per la base utilizzata elevata per il valore posizionale assegnato al punto precedente dopodiché sommiamo il tutto:

2

1

0 Tenendo conto che un numero sia composto da n elementi, che la sua posizione sia indicata il valore i e che la sua base sia rappresentata dal valore b: tutti questi passaggi possono essere riassunti con una formula

i = 0 n − 1

ci b

i

TRASFORMAZIONE DA BASE 10 ALLA BASE b DI NUMERI INTERI

ARITMETICA IN BASE 2 (lezione 08/03/2021, fatta insieme al complemento a 2) Le operazioni aritmetiche in una base b seguono le stesse regole delle operazioni aritmetiche effettuate in base 10.

DI QUANTI BIT HO BISOGNO PER RAPPRESENTARE L’INTERVALLO TRA DUE NUMERI?

1) TRA 0 E UN NUMERO GENERICO t

Se vogliamo rappresentare in base binaria i numeri da 0 a T avremo bisogno di che la lunghezza di ogni parola sia

n ≥ log 2 ( T + 1 )

Questo perché gli oggetti da rappresentare sono tutti i numeri da 1 a T più lo zero. In realtà questa formula non viene quasi mai utilizzata ma si preferisce fissare la lunghezza delle parole (n) e utilizzando una codifica naturale, sappiamo che tutti i numeri interi che possono essere rappresentati

(utilizzando quel numero di bit fissato prima) in codifica naturale vanno da 0 a 2 n − 1.

n (^0) − 1

n bit

Questo è l’intervallo di numeri naturali che possono essere rappresentati con parole di n, nei nostri computer tipicamente si usano parole da 32bit/64 bit per rappresentare numeri interi, ciò vuol dire che il

nostro pc può rappresentare numeri interi fino a 264 − 1 , quindi i numeri più grandi il pc non sa come si

rappresentano.

2) TRA UN NUMERO GENERICO a E UN NUMERO GENERICO b

Per calcolare tutti i numeri interi presenti tra l’intervallo a e b possiamo usare questa formula

(tenendo conto che a>b):

quantitànumeri =( a − b ) + 1

Dopo aver calcolato la quantità di numeri presenti tra a e b possiamo procedere come segue: **1) Fissiamo N=(a-b) +1;

  1. Applichiamo la formula** n ≥ log 2 [ ( ab ) + (^1) ] , in questo modo ci calcoliamo il numero minimo di bit necessario per rappresentare l’intervallo. Per rappresentare i numeri da a e b non si esegue direttamente la conversione in base 2 ma si esegue prima la seguente operazione:

N −( a − b )= R

Eseguo la codifica naturale

NUMERI RELATIVI: MODULO E SEGNO Anche in questo caso, visto l’insieme dei numeri relativi è infinito, riusciremo a rappresentare solo una sottoparte. Questo metodo di rappresentazione è incentrato sullo zero.

Con questo tipo di rappresentazione possiamo rappresentare 2 n − 1 numeri relativi diversi, questo perché

lo zero viene rappresentato due volte. Questa codifica non viene usata in nessuna dei dispositivi elettronici esistenti perché non è efficiente nel momento in cui vogliamo fare delle operazioni aritmetiche sui valori rappresentati.

Con la codifica modulo e segno possiamo rappresentare i numeri dell’ iNTERVALLO :

Numero di bit

( 2 n −^1 − 1 )

0

−(^2

n − 1

E’ importante ricordarsi il RANGE della codifica Modulo e segno perché ci dà la possibilità di dimensionare opportunamente i nostri bit in base ai requisiti della nostra applicazione. Nella codifica MODULO E SEGNO, il nostro numero composto da n bit , il primo bit ovvero quello che sta più a sinistra assume il significato del SEGNO del numero , invece i restanti n-1 bit vengono utilizzati per rappresentare il modulo del numero che è sempre positivo e quindi possiamo utilizzare la codifica naturale per trasformalo da decimale in binario. Per rappresentare il segno si utilizza al primo bit :  1 : se il segno è negativo  0 : se il segno è positivo. Modulo del numero Bit segno

Esempio Conversione di numero in base 10 nella CODIFICA MODULO-SEGNO Andiamo a rappresentare il valore – 9 seguendo queste regole:

1. Fissiamo il numero di bit;

  1. Guardando il segno del numero che vogliamo rappresentare, poniamo 0/1 il primo bit ;
  2. Trasformo il modulo con la codifica naturale ; N bit=6 numero da rappresentare= - 9:2= 4 RESTO 1 4:2=2 RESTO 0 2:2=1 RESTO 0 1:2=0 RESTO 1 Leggo dall’alto verso il basso il numero eh ho il modulo di -9 ovvero 1001. Il primo bit del segno è 1 (negativo) dopodiché aggiungo il modulo preceduto da 0 nel caso in cui il numero prenda meno bit di 5. ESEMPIO CONVERSIONE DI UN NUMERO RAPPRESENTATO CON LA CODIFICA MODULO E SEGNO A UN NUMERO IN BASE 10 Trasformiamo il numero rappresentato nella codifica MODULO E SEGNO in un numero in base 10. 1000110  ricordando che il primo bit rappresenta il segno del numero possiamo subito capire che ci troviamo di fronte a un numero negativo, dopodiché utilizzando la codifica naturale possiamo trasformare il modulo da base 2 in base 10.

Quindi 1 ∗ 2

2

1

=6 con il segno indicato nel primo abbiamo -

ESEMPIO: COME DIMENSIONARE ADEGUATAMENTE IL NUMERO DI BIT IN RANGE DI NUMERI RELATIVI?

Facciamo il caso di dover rappresentare i numeri relativi da -10 a +20. Per dimensionare correttamente alla domanda posta sopra poniamo

n − 1

− 1 ≥ 20 e^ – (^2

n − 1

− 1 )^ ≤ − 20

Sviluppando il primo che è il più facile dei due, avremo che 2

n − 1 (^21) , fatto ciò possiamo risolvere il tutto

applicando il logaritmo: n −^1 =log 2 21

Il logaritmo in questione è compreso tra 4 e 5, sommiamo 1 al risultato del logaritmo perché deve essere portato a destra e quindi prendiamo il numero intero subito più grande del logaritmo.

n = 1 +log 2 21 Questa equazione è uguale a un valore tra 5 e 6, quindi prendiamo il 6 come numero intero

maggiore di 6 più vicino. ATTENZIONE: quando si esegue la conversione di un numero si deve sempre capire quale codifica si deve utilizzare perché uno stesso numero binario può rappresentare diversi numeri decimali in base alla

COMPLEMENTO A 2

Nel complemento a 2 si procede nel seguente modo:N >= 0 si usa la RAPPRESENTAZIONE NATURALE ;  N<0 si fanno prima le seguenti operazioni :

n −| N | e dopodiché si applica la RAPPRESENTAZIONE NATURALE.

Per eseguire la sottrazione appena scritta sopra si può applicare un “trucchetto”, ovvero

aggiungiamo e togliamo uno quindi la formula scritta sopra diventa:

n − 1 −| N |+ 1 Fatto ciò possiamo applicare il trucchetto della sottrazione nei casi in cui abbiamo una sequenza di

n uni, spiegato nell’aritmetica di base. Fatto ciò ci rimane da sommare 1, per fare ciò si può

usare un ulteriore trucchetto ovvero quando si effettua l’inversione dei bit ci si ferma da

l’ultimo 1 iniziando a contare da sinistra verso destra ovvero dall’ultimo uno non inverto

più.

Per i numeri negativi possiamo seguire questi step :

1. RAPPRESENTARE IL MODULO IN BASE 2;

2. INVERTIRE TUTTI I BIT

3. AGGIUNGERE 1 queste due operazioni si chiamano

COMPLEMENTARE A

ESEMPIO

Numero bit=5 N_1=+7 N_2=-

N_1 (C2) 00111

Il modulo di N_2 è uguale a 00111, invertendo i bit abbiamo 11000, poi aggiungiamo 1 e

abbiamo che N_2= 11001

RICORDA: ESEGUIRE L’OPERAZIONE DI COMPLEMENTO SIGNIFICA

CAMBIARE IL SEGNO DI UN NUMERO

Il range di numeri rappresentati in complemento a 2 è uguale a: n=Numero di bit

n − 1

0

( n − 1 )

( n − 1 )

n

numeri

Nel complemento a 2 non perdiamo più lo spazio per la ripetizione dello zero e rappresentiamo con n bit, 2^n numeri Il complemento a 2 ha una caratteristica:Il PRIMO BIT dei numeri positivi è uguale a 0;Il primo bit dei numeri negativi è uguale a 1. (ATTENZIONE QUESTI BIT SONO PARTE INTEGRANTE DEI NUMERIE E HANNO UN SIGNIFICATO COMPLETAMENTE DIVERSO DAL BIT DI SEGNO USATO NELLA CODIFICA MODULO E SEGNO).

COME SI CONVERTONO I NUMERI IN COMPLEMENTO A 2 A NUMERI IN BASE 10?

Per trasformare un numero in complemento a due dobbiamo guardare il “bit di segno”, nel caso in cui:  N>=0 possiamo usare direttamente la codifica naturale ;  N< 0 : 1 )Come prima cosa dobbiamo fare l’operazione di complemento ovvero cambiare di segno al numero N;

  1. Applichiamo la CODIFICA NATURALE ;
  2. Invertiamo il segno del risultato ottenuto

Esempio

N=101001 n= 101001  (OPERAZIONE DI COMPLEMENTO) 010111 +26????

ATTENZIONE: UN ERRORE COMUNE È QUELLO DI APPLICARE DIRETTAMENTE LA CODIFICA

NATURALE SENZA ANDARE A GUARDARE IL SEGNO DEL NUMERO!

COME FACCIO A CALCOLARE IL NUMERO DI BIT NECESSARI PER RAPPRESENTARE UN NUMERO?

Per calcolare il numero di bit necessari per poter rappresentare un numero in complemento a 2 è necessario ricordarsi il RANGE DEL COMPLEMENTO A DUE e porre la seguente disequazione: N=numero che voglio rappresentare

n − 1

− 1 ≥ N (nel caso in cui N > 0)

n − 1

) (nel caso in cui N<0)

Fatto ciò risolvo applicando il logaritmo in base due. Esempio n=? N=

n − 1

− 1 ≥ 74 ^2

n − 1

≥ 75 ^ n −^1 =log 2 75 ^ 7,xxxx^ ^8

COME

COME SI PUO’ CAPIRE SE IL RISULTATO DI UNA SOMMA IN COMPLEMENTO A 2 È

SBAGLIATO?

Per capire se il risultato di una somma in complemento a 2 è sbagliata ci si basa sui segni, se il segno del risultato è diverso dal segno dei due operandi allora il risultato è sbagliato. Se il segno dei due operandi è discorse, il risultato è sempre corretto.

ATTENZIONE: IL RISULTATO DEVE ESSERE LETTO SENZA IL BIT DI RIPORTO!

Il tipo di errore che si presenta si chiama ERRORE DI OVERFLOW che si presenta quando l’oggetto che si

vuole rappresentare non è rappresentabile con il numero di bit fissato.

NUMERI RELATIVI: BIASED (ECCESSO K)

Per rappresentare un numero in ECCESSO K, si aggiunge k al numero che si vuole rappresentare e si rappresenta il risultato seguendo la rappresentazione naturale RANGE DI NUMERI RAPPRESENTATI IN BIASED/ECCESSO K Tipicamente si sceglie k in modo da poter rappresentare lo stesso numero di numeri negativi e positivi n=Numero di bit

n

− 1 − k

0

− k