Fondamenti di Informatica 2. Le operazioni binarie



Documenti analoghi
Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

ESEMPIO 1: eseguire il complemento a 10 di 765

Materiale di approfondimento: numeri interi relativi in complemento a uno

Elementi di informatica

4 3 4 = 4 x x x 10 0 aaa

2.12 Esercizi risolti

4. Operazioni aritmetiche con i numeri binari

Sommario. Addizione naturale

Rappresentazione dei numeri in un calcolatore

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Sistemi di Numerazione

Fondamenti di Informatica

SISTEMI DI NUMERAZIONE E CODICI

Alessandro Pellegrini

La somma. Esempio: Il prodotto. Esempio:

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Esercitazione Informatica I AA Nicola Paoletti

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Informatica Generale (Prof. Luca A. Ludovico) Presentazione 5.1 Operazioni aritmetiche nel sistema binario

Informatica. Rappresentazione dei numeri Numerazione binaria

Rappresentazione delle informazioni

Aritmetica dei Calcolatori 1

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Lez. 3 L elaborazione (II parte) Prof. Pasquale De Michele Gruppo 2

Codifica binaria dei numeri relativi

RAPPRESENTAZIONE DEI NUMERI BINARI. Corso di Fondamenti di Informatica AA

Elementi di informatica

Fondamenti di Informatica 2. Esercizi sulle codifiche numeriche e di testo con soluzioni

Parte 1. Vettori di bit - AA. 2012/13 1.1

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Lezioni di Matematica 1 - I modulo

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione

Corso di Calcolo Numerico

Sistemi di Numerazione Binaria NB.1

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Operazioni binarie fondamentali

Aritmetica dei Calcolatori 2

Dispense di Informatica per l ITG Valadier

Comparatori. Comparatori di uguaglianza

Codifica binaria dei numeri

Informazione analogica e digitale

Prodotto libero di gruppi

Introduzione. Università degli studi di Cassino. Ing. Saverio De Vito Tel.:

Rappresentazione binaria

Pro e contro delle RNA

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori"

I SISTEMI DI NUMERAZIONE

( x) ( x) 0. Equazioni irrazionali

Fondamenti di Informatica 2

Convertitori numerici in Excel

Introduzione. Rappresentazione di numeri in macchina, condizion

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

= 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Esempi di algoritmi. Lezione III

f(x) = 1 x. Il dominio di questa funzione è il sottoinsieme proprio di R dato da

EQUAZIONI E DISEQUAZIONI LOGARITMICHE Esercizi risolti Classi quarte

Aritmetica: operazioni ed espressioni

Esponenziali elogaritmi

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

24 : 3 = 8 con resto 0 26 : 4 = 6 con resto 2

SOMMARIO I radicali pag I radicali aritmetici pag Moltiplicazione e divisione fra radicali aritmetici pag.

Percorsi di matematica per il ripasso e il recupero

SCHEDA DI RECUPERO SUI NUMERI RELATIVI

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.6. Unità di controllo microprogrammata

Algebra di Boole ed Elementi di Logica

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

Dimensione di uno Spazio vettoriale

Il simbolo. è è = = = In simboli: Sia un numero naturale diverso da zero, il radicale. Il radicale. esiste. esiste 0 Il radicale

Contabilità ordinaria, semplificata e altri regimi contabili

Capitolo 25: Lo scambio nel mercato delle assicurazioni

Memorie ROM (Read Only Memory)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

G3. Asintoti e continuità

Anno 3. Funzioni: dominio, codominio e campo di esistenza

COMPITO DI MATEMATICA FINANZIARIA 8 Febbraio Come cambia il REA atteso se l'obbligazione sarà ancora in vita dopo le prime tre estrazioni?

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 10 Settembre 2013

ANALISI DELLE FREQUENZE: IL TEST CHI 2

Uso di base delle funzioni in Microsoft Excel

I sistemi di numerazione

risulta (x) = 1 se x < 0.

I NUMERI DECIMALI. che cosa sono, come si rappresentano

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Alcune nozioni di base di Logica Matematica

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

Kangourou della Matematica 2011 Coppa a squadre Kangourou Semifinale turno A Cervia, 7 maggio Quesiti

Algoritmi e strutture dati. Codici di Huffman

Codifica dei numeri negativi

ESTRAZIONE DI RADICE

Transcript:

Corso di per il corso di Laurea di Ingegneria Gestionale Le operazioni binarie Università degli Studi di Udine - A.A. 2010-2011 Docente Ing. Sandro Di Giusto Ph.D. 1

L'algebra binaria Il fatto di aver trovato dei meccanismi per codificare i numeri decimali in binario non è ovviamente sufficiente Un calcolatore infatti deve essere anche in grado di eseguire operazioni sui numeri codificati in binario che noi gli forniamo ed ovviamente i risultati di tali operazioni, se decodificati (interpretati) devono essere identici a quelli che avremmo avuto se avessimo svolto le stesse operazioni direttamente in base decimale Tutto questo è fattibile perché sui numeri binari è costruibile un'intera algebra e sono pertanto definibili tutte le principali operazioni: Somma Sottrazione Moltiplicazione Divisione In questo corso ci occuperemo di analizzare solamente le operazioni di somma e sottrazione Si rimanda gli interessati ai testi specializzati in architetture dei calcolatori per approfondimenti sulle implementazioni delle altre operazioni matematiche 2

L'aritmetica dei calcolatori La prima cosa da tenere presente è che i calcolatori lavorano in una aritmetica chiamata finita Quando si eseguono operazioni binarie simulando il comportamento di un calcolatore occorre pertanto sempre stabilire a priori la profondità degli operandi e del risultato (per noi sempre uguale) Per quanto riguarda il procedimento di calcolo, essenzialmente non differisce minimamente da quello imparato da piccoli riguardo la somma decimale Si può eseguire incolonnando opportunamente gli addendi Si comincia a sommare le unità di minor peso (dal LSB in poi) Esiste il concetto di riporto binario Le differenze risiedono unicamente nel fatto che quando si sommano le cifre binarie, il risultato deve continuare ad essere binario es. 1 2 +1 2 =10 2 e non 2 2! Per aiutarsi si possono usare le due seguenti tabelline: Risultato Numero b Numero a 0 1 0 0 1 1 1 0 Riporto Numero b Numero a 0 1 0 0 0 1 0 1 3

Somme binarie positive Cominciamo con il vedere come si effettuano le somme con operandi binari interi (binario puro) La prima cosa da fare è decidere la profondità; se non è imposta (specifica dell'esercizio) si può usare la profondità massima tra quella dei due operatori Scelta la profondità occorre utilizzare la proprietà dell'estensione del segno per scrivere entrambi gli operandi sul numero di bit voluto es. 1100011 2 + 11100 2 Estendo il segno su 7 bit (massimo tra 7 e 5) 1100011 2 + 0011100 2 Incolonno e sommo 0 0 0 0 0 0 0 1 1 0 0 0 1 1+ (99) 0 0 1 1 1 0 0= (28) 0 1 1 1 1 1 1 1 (127) Come si può vedere dalla verifica decimale svolta a fianco, il risultato è corretto ed è codificato correttamente su 7 bit come gli addendi (l'8 bit è 0 e come tale non importante in binario puro) Tuttavia come ovvio non c'era certezza che il risultato potesse essere espresso su soli 7 bit e quindi occorre prestare attenzione 4

Somme binarie positive es. 1010011 2 + 11101 2 Estendo il segno su 7 bit (massimo tra 7 e 5) 1010011 2 + 0011101 2 Incolonno e sommo 0 0 1 1 1 1 1 1 0 1 0 0 1 1+ (83) 0 0 1 1 1 0 1= (29) 0 1 1 1 0 0 0 0 (112) Anche in questo esempio il risultato è corretto ed è codificato correttamente su 7 bit come gli addendi es. 111110 2 + 10 2 Estendo il segno su 6 bit (massimo tra 6 e 2) 111110 2 + 000010 2 Incolonno e sommo 1 1 1 1 1 0 1 1 1 1 1 0+ (62) 0 0 0 0 1 0= (2) 1 0 0 0 0 0 0 (0) E' evidente che in questo caso invece qualcosa non ha funzionato poiché il risultato espresso sullo stesso numero di bit degli addendi (6) è pari a 0 mentre doveva essere 64 10 (ovvero 1000000 2 ) Per garantire che non ci siano stati errori nella rappresentazione di una somma in binario puro è sufficiente quindi che l'ultimo riporto (quello che genera l'n+1 bit del risultato) sia 0; in caso contrario il risultato ha ecceduto la rappresentatività su n bit 5

Somme binarie con numeri relativi Fortunatamente i calcolatori possono svolgere facilmente anche operazioni con i numeri relativi, a patto di usare il C2 Si può infatti dimostrare che usando le normali tecniche di somma appena viste su numeri scritti in C2 permette di svolgere senza errori e complicazioni anche le somme di numeri relativi Le modalità e gli accorgimenti sono immutati: usare la regola di estensione del segno per rendere i due addendi di eguale lunghezza (o pari a quanto voluto) e quindi incolonnare es. 1000101 2 + 011010 2 Estendo il segno su 7 bit (massimo tra 7 e 6) 1000101 2 + 0011010 2 ( si osservi che i due numeri vanno considerati in C2 e quindi il secondo addendo avendo MSB pari a 0 è positivo e l'estensione va fatta aggiungendo degli 0 in testa) Incolonno e sommo 0 0 0 0 0 0 0 1 0 0 0 1 0 1+ (-59) 0 0 1 1 0 1 0= (26) 0 1 0 1 1 1 1 1 (-33) Si può vedere al termine che il risultato dell'operazione espresso su 7 bit (come gli addendi) è corretto, ed anzi tenere in considerazione un eventuale 8 bit (che sarebbe 0) renderebbe errato il risultato (perchè diventerebbe +95 10 ) 6

Somme binarie con numeri relativi es. 110011 2 + 0100111010 2 Estendo il segno su 10 bit (massimo tra 10 e 6) 1111110011 2 +0100111010 2 ( si osservi che i due numeri vanno considerati in C2 e quindi il primo addendo avendo MSB pari a 1 è negativo e l'estensione va fatta aggiungendo degli 1 in testa) Incolonno e sommo 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 1+ (-13) 0 1 0 0 1 1 1 0 1 0= (314) 1 0 1 0 0 1 0 1 1 0 1 (301) Si può vedere al termine che il risultato dell'operazione espresso su 10 bit (come gli addendi) è corretto, pur essendo presente un ultimo bit (l'11 ) pari ad 1 (se fosse stata una somma in binario puro sarebbe stato il segnale di errore!) es. 100010 2 + 1101 2 Estendo su 6 bit (massimo tra 6 e 4) 111110 2 + 111101 2 Incolonno e sommo 1 0 0 0 0 0 1 0 0 0 1 0+ (-30) 1 1 1 1 0 1= (-3) 1 0 1 1 1 1 1 (+31) In questo esempio si vede come a differenza di prima l'ultimo riporto (l'n+1) sia ancora 1 ma in questo caso il risultato è errato su n bit (sarebbe corretto su n+1, ma in aritmetica finita non è accettabile un risultato su un numero di bit diverso da n) 7

Somme binarie con numeri relativi Quali sono dunque le regole per scoprire se il risultato di una somma tra numeri relativi è corretto o meno? Anche in questo caso, come per le somme in binario puro, il trucco c'è ed è anche molto semplice Per validare o meno il risultato su n bit di una somma tra numeri relativi (notazione in C2) occorre guardare gli ultimi due riporti, ovvero q n e q n+1 Se i valori dei due riporti sono uguali (entrambi 0 o entrambi 1) il risultato è corretto su n bit e l'n+1 bit va scartato qualunque valore abbia Se i valori dei due riporti sono diversi, il risultato è errato poiché non rappresentabile su n bit Usando questo metodo si vede che nel primo e nel secondo esercizio i due bit di riporto erano sempre uguali (due 0 nel primo e due 1 nel secondo) e perciò il risultato era corretto, mentre nel terzo esercizio i due bit q n e q n+1 sono diversi e pertanto il risultato è invalido E' infine importante e fondamentale ricordare che il risultato di una somma in aritmetica finita deve sempre e solo essere considerata su n bit e il controllo sui riporti serve unicamente per capire se il risultato è corretto (rappresentabile su n bit) oppure no 8

Sottrazioni binarie Ci si chiede ora se ci sia la possibilità di eseguire anche sottrazioni binarie in modo agevole La risposta è ovviamente sì ed anzi il meccanismo è perfino già conosciuto Se pensiamo infatti di voler eseguire l'operazione A-B che è una sottrazione tra i due operandi A e B (numeri relativi), nessuno ci vieta di pensare di svolgere la stessa operazione attraverso un'addizione poiché A-B = A+(-B) in cui l'operazione di sottrazione è divenuta somma ed il secondo operando è semplicemente l'inverso dell'operando originario (se era positivo diventa negativo, e viceversa) Siccome le somme tra numeri relativi si fanno come visto nelle slide precedenti e l'inversione del segno di un operando in binario altro non è che il suo C2, abbiamo tutti gli strumenti per svolgere quanto necessario es. 1100011 2-011010 2 Estendo il segno su 7 bit (massimo tra 7 e 6) 1100011 2 0011010 2 Trasformo il secondo operando mediante C2 (da positivo diventa negativo) ovvero 1100110 2 Incolonno e sommo 1 1 0 0 1 1 0 1 1 0 0 0 1 1+ (-29) 1 1 0 0 1 1 0= (-26) 1 1 0 0 1 0 0 1 (-55) Valgono le stesse considerazioni per la validazione del risultato mediante q n+1 e q n 9

L'overflow Cosa rappresenta la condizione di validazione del risultato tramite controllo degli ultimi due riporti q n+1 e q n? Tecnicamente la condizione in cui si incappa quando questo genere di errore accade è detta di overflow ed è essenzialmente la stessa che in binario puro è data dalla presenza dell'ultimo riporto q n+1 ad 1 L'overflow indica la presenza di un risultato che eccede le capacità di rappresentazione del sistema che lo ha generato (un numero che non appartiene al range di rappresentatività possibile per quella profondità di calcolo) Il problema è intimamente legato perciò al fatto che stiamo usando un sistema ad aritmetica finita Vedremo più avanti che questo problema è presente anche nelle codifiche dei numeri razionali/reali (in cui troveremo anche il concetto duale di underflow) e lo ritroveremo nello studio dei processori In generale l'importante è tenere sempre d'occhio la presenza dell'overflow al termine di un calcolo, pena il rischio di portarsi dietro nei processi dei risultati clamorosamente e pesantemente errati! 10