I SISTEMI DI NUMERAZIONE



Documenti analoghi
SISTEMI DI NUMERAZIONE E CODICI

Convertitori numerici in Excel

4 3 4 = 4 x x x 10 0 aaa

I sistemi di numerazione

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

I SISTEMI DI NUMERAZIONE (esercizi svolti)

Dispense di Informatica per l ITG Valadier

= 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

ESEMPIO 1: eseguire il complemento a 10 di 765

- Sistemi di numerazione 1 - Sistemi di Numerazione

(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

Alessandro Pellegrini

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

I SISTEMI DI NUMERAZIONE

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

4. Operazioni aritmetiche con i numeri binari

Sistemi di Numerazione

La somma. Esempio: Il prodotto. Esempio:

1 Sistema additivo e sistema posizionale

Informatica. Rappresentazione dei numeri Numerazione binaria

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta

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

Definizioni iniziali

I SISTEMI DI NUMERAZIONE E LA NUMERAZIONE BINARIA

Informazione analogica e digitale

Trattamento dell informazione

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

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

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Fondamenti di Informatica

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

4. Operazioni elementari per righe e colonne

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

Aritmetica dei Calcolatori 1

2.12 Esercizi risolti

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Conversione tra le basi binarie

I diversi tipi di sistemi di numerazione

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Elementi di informatica

Codifica dei numeri negativi

Sistemi di Numerazione

da 2 a 5 giocatori, dai 10 anni in su, durata 30 minuti

LA MOLTIPLICAZIONE IN CLASSE SECONDA

Operazioni binarie fondamentali

Aritmetica: operazioni ed espressioni

Appunti sulla Macchina di Turing. Macchina di Turing

Sistemi di Numerazione Binaria NB.1

Teoria delle code. Sistemi stazionari: M/M/1 M/M/1/K M/M/S

INTRODUZIONE I CICLI DI BORSA

Rappresentazione di informazioni con un alfabeto finito

FISICA. Le forze. Le forze. il testo: 2011/2012 La Semplificazione dei Testi Scolastici per gli Alunni Stranieri IPSIA A.

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

Rappresentazione delle informazioni

Elementi di Informatica e Programmazione

la scienza della rappresentazione e della elaborazione dell informazione

Rappresentazione dei numeri in un calcolatore

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

1. PRIME PROPRIETÀ 2

Matematica generale CTF

LA NOTAZIONE SCIENTIFICA

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

Lezione 9: Cambio di base

la scienza della rappresentazione e della elaborazione dell informazione

La prof.ssa SANDRA VANNINI svolge da diversi anni. questo percorso didattico sulle ARITMETICHE FINITE.

UNA LEZIONE SUI NUMERI PRIMI: NASCE LA RITABELLA

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

RETI E SOTTORETI. Copyright 2010 Marco Salatin Pagina 1

Calcolo del Valore Attuale Netto (VAN)

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Probabilità discreta

Cartella: L esperienza del contare. Attività: CONTIAMO I FAGIOLI

PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si sostituisce la loro somma.

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

Utilizzo delle formule in Excel

Guardiamo ora però la cosa da un altro punto di vista analizzando il seguente grafico a forma di torta. La torta in 5 parti

COME PARLARE DI DISLESSIA IN CLASSE.

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Un metodo per il rilevamento degli errori: la tecnica del Bit di Parità

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

Unità 1. I Numeri Relativi

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

LABORATORIO DI MATEMATICA RENDITE, AMMORTAMENTI, LEASING CON EXCEL

LA DIFFERENZA un nodo da sciogliere. Un percorso ad ostacoli in classe prima e seconda

Capitolo 2. Operazione di limite

IGiochidiArchimede-SoluzioniBiennio 22 novembre 2006

SCHEDA DI RECUPERO SUI NUMERI RELATIVI

Il principio di induzione e i numeri naturali.

Terza Edizione Giochi di Achille ( ) - Olimpiadi di Matematica Soluzioni Categoria M1 (Alunni di prima media)

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

Fondamenti di Informatica 2. Le operazioni binarie

Logaritmi ed esponenziali

RAPPRESENTAZIONE DEI NUMERI BINARI. Corso di Fondamenti di Informatica AA

Economia Applicata ai sistemi produttivi Lezione II Maria Luisa Venuta 1

Transcript:

ISTITUTO DI ISTRUZIONE SUPERIORE G. M. ANGIOY CARBONIA I SISTEMI DI NUMERAZIONE Prof. G. Ciaschetti Fin dall antichità, l uomo ha avuto il bisogno di rappresentare le quantità in modo simbolico. Sono nati così, in ogni diversa civiltà, i numeri. DEFINIZIONE: Un insieme di numeri con le possibili operazioni che su di essi è possibile fare è chiamato sistema di numerazione. Nel tempo, e nelle diverse civiltà, sono stati espressi diversi sistemi di numerazione: ad esempio, i romani non avevano il numero 0 e usavano il sistema che comprende i numeri I, II, III, IV, ecc.; oppure nella civiltà Maya si usavano i numeri ecc.; o ancora, in oriente ancora oggi usano un sistema che utilizza simboli come. A partire dall anno 1000 circa, nella civiltà araba (e poi introdotti in Italia dal matematico Fibonacci nel 1223) si sviluppano i numeri 0, 1, 2, 3, ecc., che usiamo ancora oggi. Il sistema di numerazione decimale, che già conosciamo bene e che attualmente usa l uomo occidentale, è composto dalle 10 cifre 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, e pertanto si dice che ha base 10. Inoltre, è un sistema posizionale: il valore di ogni cifra dipende dalla posizione nella quale la cifra viene scritta. Le diverse posizioni rappresentano successive potenze della base, ossia del 10. Facciamo qualche esempio: nel numero 235, la cifra più a destra vale 5, quella immediatamente alla sua sinistra vale 30, quella più a sinistra vale 200. Infatti, si ha la seguente equivalenza: 235 = 2 centinaia + 3 decine + 5 unità che si può anche scrivere nel seguente modo: 235 = 2*10 2 + 3*10 1 + 5*10 0 Notiamo dal precedente esempio che la posizione più a destra è la potenza alla 0 della base, poi andando da destra verso sinistra, abbiamo la potenza alla 1, poi alla seconda, ecc. Facciamo un altro esempio per maggiore chiarezza: 4718 = 4 migliaia + 7 centinaia + 1 decina + 8 unità e cioè: 4718 = 4*10 3 +7*10 2 + 1*10 1 + 8*10 0

Ricordiamo sempre che il valore della la cifra più a destra è la 0-esima potenza della base, cioè del 10 nel sistema decimale. Come vedremo tra poco, sarà così anche per gli altri sistemi di numerazione con base diversa dal 10. Il sistema binario Il computer non usa il sistema di numerazione decimale che usiamo noi uomini, ma piuttosto il sistema binario. Anche questo è un sistema di numerazione posizionale, ma ha solo due cifre, che sono 0 e 1. Quindi, il sistema binario ha base 2, e il valore di ogni cifra dipende dalla sua posizione. Una cifra binaria è chiamata un BIT (da BInary digit). Ma quanto valgono le cifre? Se nel sistema di numerazione decimale le diverse posizioni rappresentano potenze del 10, nel sistema binario esse sono potenze del 2, essendo il sistema binario in base 2. Facciamo qualche esempio: 110 = 1*2 2 +1*2 1 +0*2 0 = 4 + 2 + 0 = 6 110000 = 1*2 5 +1*2 4 +0*2 3 +0*2 2 + 0*2 1 + 0*2 0 = 1*32 + 1*16 + 0*8 + 0*4 + 0*2 + 0*1 = 32 + 16 + 0 + 0 + 0 + 0 = 48 10011 = 1*2 4 +0*2 3 +0*2 2 + 1*2 1 + 1*2 0 = 1*16 + 0*8 + 0*4 + 1*2 + 1*1 = 16 + 1 = 19 Per distinguere se un numero è in base 10 o in base 2 (si noti, ad esempio, che il numero 101 può essere il numero cinque espresso in binario, oppure il numero centouno in decimale), si usa le seguente notazione: (numero) base. Così, ad esempio, il numero decimale centodieci lo scriviamo come (110) 10 mentre il numero binario 110 lo scriviamo come (110) 2. Riprendendo i due esempi di sopra, possiamo allora scrivere che (110000) 2 = (48) 10, mentre (10011) 2 = (19) 10. Inoltre, abbiamo imparato a convertire i numeri binari in numeri decimali! Basta infatti, proprio come abbiamo fatto negli esempi di sopra, vedere quanto vale il numero binario, sommando le cifre con il loro valore, che dipende dalla posizione. Questo procedimento può essere ripetuto per vedere quanto vale in decimale ogni numero binario. In generale, per ottenere da un numero binario l equivalente numero decimale, basta vedere il valore delle singole cifre e sommare questi valori tra loro. Abbiamo così i numeri: (0) 2 = 0*2 0 = (0) 10 (1) 2 = 1*2 0 = (1) 10 (10) 2 = 1*2 1 + 0*2 0 = 2 + 0 = (2) 10 (11) 2 = 1*2 1 + 1*2 0 = 2 + 1 = (3) 10 (100) 2 = 1*2 2 +0*2 1 + 0*2 0 = 4 + 0 + 0 = (4) 10

(101) 2 = 1*2 1 + 0*2 1 +1*2 0 = 4 + 0 + 1 = (5) 10 (110) 2 = 1*2 1 + 1*2 1 +0*2 0 = 4 + 2 + 0 = (6) 10 (111) 2 = 1*2 1 + 1*2 1 +1*2 0 = 4 + 2 + 1 = (7) 10 (1000) 2 = 1*2 3 +0*2 2 +0*2 1 + 0*2 0 = 8 + 0 + 0 + 0 = (8) 10 (1001) 2 = 1*2 3 +0*2 2 +0*2 1 +1*2 0 = 8 + 0 + 0 + 1 = (9) 10 (1010) 2 = 1*2 3 +0*2 2 +1*2 1 +0*2 0 = 8 + 0 + 1 + 0 = (10) 10 (1011) 2 = 1*2 3 +0*2 2 +1*2 1 +1*2 0 = 8 + 0 + 1 + 1 = (11) 10 (1100) 2 = 1*2 3 +1*2 2 +0*2 1 +0*2 0 = 8 + 4 + 0 + 0 = (11) 10 e così via. Ora cerchiamo di allenare un po l occhio, e andare più veloci nelle conversioni da binario a decimale: si noti che essendo le cifre binarie 0 e 1, ogni posizione può non essere presa quando la cifra è 0, oppure essere presa una volta quando la cifra è 1 (a differenza del sistema decimale, in cui ogni posizione può essere presa più volte: 3 centinaia, 4 decine, ecc.). Quindi, possiamo dire che ogni numero binario è formato da somme di potenze del 2. O meglio, scorrendo tutte le potenze del 2 dalla cifra meno significativa (quella più a destra, con esponente 0) fino a quella più significativa (quella più a sinistra, con l esponente maggiore), avremo che alcune di esse partecipano (quando c è 1) nel formare il numero, altre invece non partecipano (quando c è 0). Di nuovo, facciamo qualche esempio, scrivendo il valore delle diverse posizioni sopra il numero: 8 4 2 1 (1011) 2 = 8 + 2 + 1 = (11) 10 16 8 4 2 1 (11000) 2 = 16 + 8 = (24) 10 Molto più semplice, no? Si provi, per esercizio, a convertire in decimale i seguenti numeri binari: (11100011) 2, (100011) 2, (1000100) 2, (1111) 2, (10101010) 2 Verrebbe da chiedersi: ma perché complicarsi la vita con un diverso sistema di numerazione? Perché il computer usa il sistema binario, e non quello decimale? In realtà, se per noi umani è facile lavorare con 10 cifre, per il computer questo è difficilissimo: esso usa diversi livelli di tensione elettrica per rappresentare diversi numeri; per rappresentare una cifra binaria basta un solo livello di tensione (1 = c è corrente, 0 = non c è corrente), mentre per rappresentare una cifra decimale occorrerebbe distinguere 10 diversi livelli di tensione, cosa molto più difficile. Inoltre, come vedremo in seguito, è molto più facile per il computer effettuare le operazioni in binario piuttosto che in decimale, e anche lavorare con i numeri negativi! E per questo motivo che il computer è velocissimo: fare operazioni in binario è molto più semplice!!!!

Prima di imparare a fare l inverso di quanto abbiamo appreso finora, cioè convertire un numero decimale in binario, impariamo a contare in binario. Questo ci aiuterà nella conversione. Per contare in binario, dobbiamo sapere contare bene in decimale: sembra una ovvietà, ma dobbiamo capire bene il meccanismo che usiamo per contare. Iniziamo: 0 19 93 119 1 20 120 2 21 99 121 3 22 100 122 4 101 123 5 29 102 6 30 103 198 7 31 199 8 32 109 200 9 33 110 201 10 111 202 11 90 112 12 91 113 999 92 1000 Notiamo attentamente come avviene il conteggio: si parte con una sola cifra, e si aumenta il suo valore fino ad arrivare al 9 (il valore più grande nel sistema decimale). Il prossimo numero lo si ottiene aggiungendo un'altra cifra a sinistra, con valore 1, e rimettendo a 0 la cifra più a destra, cioè per fare il numero 10, che è pari alla base decimale, ci occorre prendere una decina, cioè una volta 10 1 e zero unità, cioè 0 volte 10 0. Si aumenta la cifra più a destra finché si può, cioè fino al 19, dopo di che per aggiungere un altro numero si aumenta quella a sinistra (due decine) e si rimette a zero quella a destra (zero unità). Abbiamo così il numero 20. Si procede in questo modo fino al 29, poi ancora una decina e si ottiene 30, e così via fino a 99. A questo punto, per aumentare ancora di uno, non essendo più possibile con due cifre, prendiamo una terza cifra (una centinaia, cioè una volta 10 2 ) e rimettiamo a 0 le due più a destra. Si ricomincia ad aumentare, finché si può, la cifra più a destra, ottenendo così 101, 102,, 109, poi 110, 111, 112, e così via fino a 199. Per il prossimo numero serve ancora una centinaia, quindi prendiamo due volte 10 2 e ricominciamo con 0 alla sua destra, 200, 201, 202, Facile, no? Vediamo ora in binario. Si utilizza lo stesso sistema: si aumenta la cifra più a destra finché si può, e quando non si può più, si aggiunge una cifra a sinistra, rimettendo a 0 quelle più a destra. Iniziamo con una sola cifra binaria, cioè un solo bit: (0) 2 = 0*2 0 = (0) 10 (1) 2 = 1*2 0 = (1) 10 ora una sola cifra non ci basta più, quindi ne aggiungiamo un altra a sinistra, rimettendo a 0 quella a destra (10) 2 = 1*2 1 + 0*2 0 = 2 + 0 = (2) 10 (11) 2 = 1*2 1 + 1*2 0 = 2 + 1 = (3) 10

di nuovo, non possiamo aumentare più, quindi aggiungiamo un altra cifra a sinistra, e rimettiamo a zero quelle a destra (100) 2 = 1*2 2 +0*2 1 + 0*2 0 = 4 + 0 + 0 = (4) 10 (101) 2 = 1*2 1 + 0*2 1 +1*2 0 = 4 + 0 + 1 = (5) 10 non è più possibile aumentare quella più a destra, quindi si passa a (110) 2 = 1*2 1 + 1*2 1 +0*2 0 = 4 + 2 + 0 = (6) 10 (111) 2 = 1*2 1 + 1*2 1 +1*2 0 = 4 + 2 + 1 = (7) 10 e così via, ottenendo (1000) 2 = 1*2 3 +0*2 2 +0*2 1 + 0*2 0 = 8 + 0 + 0 + 0 = (8) 10 (1001) 2 = 1*2 3 +0*2 2 +0*2 1 +1*2 0 = 8 + 0 + 0 + 1 = (9) 10 (1010) 2 = 1*2 3 +0*2 2 +1*2 1 +0*2 0 = 8 + 0 + 1 + 0 = (10) 10 (1011) 2 = 1*2 3 +0*2 2 +1*2 1 +1*2 0 = 8 + 0 + 1 + 1 = (11) 10 (1100) 2 = 1*2 3 +1*2 2 +0*2 1 +0*2 0 = 8 + 4 + 0 + 0 = (12) 10 (1101) 2 = 1*2 3 +1*2 2 +0*2 1 +1*2 0 = 8 + 4 + 0 + 1 = (13) 10 (1110) 2 = 1*2 3 +1*2 2 +1*2 1 +0*2 0 = 8 + 4 + 1 + 0 = (14) 10 (1111) 2 = 1*2 3 +1*2 2 +1*2 1 +1*2 0 = 8 + 4 + 2 + 1 = (15) 10 E così via. Chiaro? Ora notiamo una cosa: se ad esempio prendiamo il numero (10000) 2, il numero precedente è (1111) 2. Infatti, abbiamo (10000) 2 = 1*2 4 +0*2 3 +0*2 2 +0*2 1 +0*2 0 = 16 + 0 + 0 + 0 + 0 = (16) 10 (1111) 2 = 1*2 3 +1*2 2 +1*2 1 +1*2 0 = 8 + 4 + 2 + 1 = (15) 10 Possiamo allora dire che per formare il numero decimale 15, ci servono in binario 4 bit, tutti messi a 1. Per formare il numero decimale 16, invece, ci servono 5 bit, di cui il più significativo (il più a sinistra) è 1, e gli altri sono tutti 0. Non esiste altro modo di fare il numero 16, e non esiste altro modo di fare il numero 15. Lo stesso vale per tutti gli altri numeri. In generale, con un solo bit facciamo i numeri da 0 a 1, con due bit i numeri da 0 a 3, con tre bit i numeri da 0 a 7, con 4 bit i numeri da 0 a 15, e così via. Riprenderemo in un altra dispensa questa caratteristica dei numeri binari. Ora che sappiamo contare in binario, ritorniamo alle conversioni, e vogliamo convertire un numero decimale in binario: esiste un metodo a occhio, che è molto rapido, e un metodo meccanico che è più lento ma non richiede un grande sforzo mentale. - metodo a occhio

supponiamo di voler convertire in binario, ad esempio, il numero (23) 10. Sapendo che un numero binario è formato da somme di potenze del 2, ci chiediamo quali servono: elenchiamole (non tutte, non serve andare troppo oltre): 64 32 16 8 4 2 1 dobbiamo decidere quali prendere e quali no per formare il nostro (23) 10. Appare evidente che il 64 e il 32 sono troppo grandi, quindi non vanno presi, come tutte le potenze superiori. Il numero 16 invece va preso, perché se non lo prendessimo, con i rimanenti potremmo formare al massimo il numero 15. Ora, abbiamo 16 nel nostro carniere, manca ancora 7 per arrivare a 23. Ripetendo il ragionamento appena fatto, l 8 non lo prendiamo, mentre prendiamo il 4, il 2 e l 1. Abbiamo la seguente situazione: 64 32 16 8 4 2 1 e sapendo che 0 = non lo prendo e 1 = lo prendo, otteniamo il numero binario 0 0 1 0 1 1 1 Si noti che gli 0 più a sinistra possono essere tolti perché non danno valore al numero, come accade anche in decimale: se mi danno 50 Euro oppure 00050 Euro, è la stessa cosa!. Facciamo la conversione contraria, per vedere se torna: (10111) 2 = 1*2 4 +0*2 3 +1*2 2 +1*2 1 +1*2 0 = 16 + 0 + 4 + 2 + 1 = (23) 10 Perfetto! - metodo meccanico Il metodo appena visto è semplice e di rapida esecuzione. Ma che succede se qualcuno ci chiede di convertire in binario il numero 776324? Non è così facile! Un modo per effettuare le conversioni in modo da non scervellarsi troppo è quello di dividere ripetutamente il numero per 2, fino a quando si ha un quoziente nullo, e prendere i resti della divisione in ordine inverso. Facciamo un esempio, ancora con il numero (23) 10 : 23:2 = 11 con resto 1 11:2 = 5 con resto 1 5:2 = 2 con resto 1 2:2 = 1 con resto 0 1:2 = 0 con resto 1 Ci fermiamo quando il quoziente della divisione diventa nullo. Prendendo i resti in ordine inverso, abbiamo il numero in binario: (10111) 2

Facciamo un altra conversione, giusto per allenarci un po : vogliamo sapere come diventa in binario il numero decimale (58) 10. 58:2 = 29 con resto 0 29:2 = 14 con resto 1 14:2 = 7 con resto 0 7:2 = 3 con resto 1 3:2 = 1 con resto 1 1:2 = 0 con resto 1 il numero ottenuto è allora (111010) 2. Facciamo la conversione contraria per accertarci che tutto sia esatto: (111010) 2 = 1*2 5 +1*2 4 +1*2 3 +0*2 2 +1*2 1 +0*2 0 = 32 + 16 + 8 + 0 + 2 + 0 = (58) 10 Abbiamo imparato a convertire un numero da decimale a binario, e viceversa! Si provi, per esercizio, a convertire in binario i numeri (34) 10, (82) 10, (71) 10, (109) 10. Operazioni nel sistema binario Come nel sistema decimale, nel sistema binario è possibile effettuare le operazioni di addizione, sottrazione, moltiplicazione e divisione. Noi impareremo qui solo le prime due, poiché il computer fa le moltiplicazioni e le divisioni compiendo addizioni e sottrazioni ripetute. Infatti, abbiamo ad esempio per la moltiplicazione: 5*7 = 5 + 5 + 5 + 5 + 5 + 5 + 5 (7 volte) = 35 mentre per la divisione abbiamo 25/3 25 3 22 3 19 3 16 3 14 3 11 3 8 3 5 3 2 3-1 (siamo riusciti 8 volte a togliere 3 da 25) da cui otteniamo 25/3 = 8. Si noti che così possiamo trovare il quoziente della divisione, e non la divisione esatta, poiché stiamo parlando di numeri interi, cioè senza parte decimale. Somma tra numeri binari Per effettuare la somma tra due numeri binari, si procede come per la somma tra numeri decimali, mettendo i numeri in colonna e sommando cifra a cifra, partendo da destra, con la seguente regola: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 con riporto di 1

Facciamo qualche prova di esempio (abbiamo scritto in piccolo i riporti in alto): 1 1 1 1 (101101) 2 + (45) 10 + ( 111) 2 = (7) 10 = (110100) 2 (52) 10 partendo dalla cifra più a destra, troviamo 1 + 1: seguendo la regola, scriviamo 0 e riportiamo 1. Procedendo a sinistra, troviamo 1 + 0 + 1 (includendo il riporto), che fa 2, cioè 10 in binario, quindi di nuovo scriviamo 0 e riportiamo 1. Ancora più a sinistra: troviamo 1 + 1 + 1 (compreso il riporto), cioè 3, che in binario è 11. Quindi, scriviamo 1 e riportiamo 1. Andando ancora a sinistra, troviamo 1 + 0, quindi scriviamo 1. I restanti bit del primo numero li riscriviamo come sono, visto che è come se nel secondo numero ci fosse 0. Facciamo un altro esempio: 1 1 1 (1111) 2 + (15) 10 + ( 101) 2 = (5) 10 = (10100) 2 (20) 10 partendo dalla cifra più a destra, troviamo 1 + 1: seguendo la regola, scriviamo 0 e riportiamo 1. Procedendo a sinistra, troviamo 1 + 1 + 0 (includendo il riporto), che fa 2, cioè 10 in binario, quindi di nuovo scriviamo 0 e riportiamo 1. Ancora più a sinistra: troviamo 1 + 1 + 1 (compreso il riporto), cioè 3, che in binario è 11. Quindi, scriviamo 1 e riportiamo 1. Andando ancora a sinistra, troviamo 1 + 1, quindi scriviamo 0 e riportiamo 1. Sottrazione tra numeri binari Come per la somma, per effettuare la sottrazione tra due numeri binari, si procede come per la sottrazione tra numeri decimali, mettendo i numeri in colonna e sottraendo cifra a cifra, partendo da destra, con la seguente regola: 0-0 = 0 0-1 = 1 con prestito di 1 1-0 = 1 1-1 = 0 Facciamo qualche prova di esempio: (1111) 2 - (15) 10 - ( 101) 2 = (5) 10 = (1010) 2 (10) 10

partendo dalla cifra più a destra, troviamo 1 1, quindi scriviamo 0. Andando a sinistra, troviamo 1 0, per cui scriviamo 1. Poi troviamo di nuovo 1 1, e scriviamo 0, e infine troviamo 1 0 e scriviamo 1. Ora facciamo un altro esempio con i prestiti: 0 (1101) 2 - (13) 10 - (11) 2 = (3) 10 = (1010) 2 (10) 10 partendo dalla cifra più a destra, troviamo 1 1, quindi scriviamo 0. Andando a sinistra, troviamo 0 1, per cui scriviamo 1 e prendiamo un 1 in prestito a sinistra (l 1 diventa perciò 0). Procedendo, otteniamo il nostro risultato. Ancora un altro esempio, in decimale stavolta: 9 9 (1000) 10 - (7) 10 = (993) 10 Osserviamo che non avendo trovato prestito immediatamente a sinistra, siamo andati a prendere il prestito ancora più a sinistra, dove ce n era. Di conseguenza, avendo tolto 1 a 100, quello che resta è 99. Succede lo stesso anche in binario, come si può osservare dal seguente esempio: 1 1 (10001) 2 - (17) 10 - (11) 2 = (3) 10 = (1110) 2 (14) 10 partendo dalla cifra più a destra, troviamo 1 1, quindi scriviamo 0. Andando a sinistra, troviamo 0 1, quindi scriviamo 1 e andiamo a cercare un 1 in prestito a sinistra. Lo troviamo dopo qualche posizione. Ragionando come l esempio precedente, abbiamo tolto 1 dal numero binario 100, quello che resta è 11. Chiaro? Altri sistemi di numerazione: il sistema ottale Nel computer, spesso accade di dover indicare i bit a gruppi di 3. Nasce così una rappresentazione ottale dei numeri. Anche questo è un sistema di numerazione posizionale, ma ha otto cifre, che sono 0, 1, 2, 3, 4, 5, 6 e 7. Quindi, il sistema ottale ha base 8, e il valore di ogni cifra dipende dalla sua posizione. Ma quanto valgono le cifre? Se nel sistema di numerazione decimale le diverse

posizioni rappresentano potenze del 10, nel sistema binario invece potenze del 2, nel sistema ottale esse rappresentano potenze dell 8. Facciamo qualche esempio: (541) 8 = 5*8 2 + 4*8 1 + 1*8 0 = 5*64 + 4*8 + 1*1 = 320 + 32 + 1 = (353) 10 (1147) 8 = 1*8 3 +1*8 2 + 2*8 1 + 7*8 0 = 1*512 + 1*64 + 2*8 + 7*1= 512 + 64 + 32 + 7 = (615) 10 Come prima, abbiamo imparato a convertire un numero ottale in un numero decimale! Per fare la conversione inversa, si procede allo stesso modo della conversione da decimale a binario, solo che stavolta la base è 8 e non 2: allora, si divide per 8 ripetutamente, fino a che si raggiunge un quoziente nullo, e si prendono i resti della divisione (che vanno da 0 a 7, quindi cifre ottali) in ordine inverso. Facciamo un esempio: vogliamo convertire in ottale il numero (187) 10 : 187:8 = 23 con resto 3 23:8 = 2 con resto 7 2:8 = 0 con resto 2 Il numero ottale ottenuto è allora (273) 8. Facciamo la conversione contraria per la prova: (273) 8 = 2*8 2 + 7*8 1 + 3*8 0 = 2*64 + 7*8 + 3*1 = 128 + 56 + 3 = (187) 10 Fantastico, ora sappiamo anche convertire un numero decimale in un numero ottale! All inizio di questo paragrafo, abbiamo accennato al fatto che il sistema ottale nasce dalla necessità di dover indicare, nel computer, i bit a gruppi di 3. Infatti, ogni computer lavora con parole che hanno un numero fissato di bit, e ci sono (ma al giorno d oggi forse sono un po obsoleti) computer che hanno parole di 3 bit! Ma cosa c entrano i bit, cioè le cifre binarie, con le cifre ottali? E perché gruppi di 3 bit? Osserviamo che per fare una cifra ottale, bastano 3 bit. Infatti, abbiamo: binario ottale decimale 000 0 0 001 1 1 010 2 2 011 3 3 100 4 4 101 5 5 110 6 6 111 7 7 1000 10 8 1001 11 9 1010 12 10 1011 13 11 1100 14 12 1101 15 13 1110 16 14

e così via. Come si vede, c è una stretta relazione tra un gruppo di 3 bit e una cifra ottale: Ogni gruppo di 3 bit corrisponde a una cifra ottale, e viceversa, ogni cifra ottale corrisponde a un gruppo di 3 bit! Sfruttando questa osservazione, possiamo imparare a convertire un numero binario in ottale, e viceversa. Basta sostituire a ogni cifra ottale un gruppo di 3 bit, e a ogni gruppo di 3 bit una cifra ottale nella conversione inversa. Facciamo qualche esempio: vogliamo convertire in binario il numero (613) 8. Poiché risulta, su 3 bit, 6 = 110 1 = 001 3 = 011 otteniamo il numero binario (110-001-011), cioè (110001011) 2. Ancora un esempio, stavolta al contrario, convertiamo un numero da binario a ottale: vogliamo convertire in ottale il numero (11101) 2. Procediamo, come prima, raggruppando i bit a gruppi di 3 (partendo da destra), e trasformando ogni gruppo nella corrispondente cifra ottale. Risultano due gruppi di 3 bit, cioè (11-101), e poiché abbiamo 101 = 5 11 = 3 (è come se fosse 011) otteniamo il numero ottale (35) 8. Per prova, si convertano i seguenti numeri decimali in ottale, e si faccia poi la conversione inversa per verifica: (43) 10, (121) 10, (56) 10, (77) 10. Il sistema esadecimale Oltre che a gruppi di 3 bit, spesso accade nel mondo dei computer di dover raggruppare i bit a gruppi di 4. Nasce così il sistema di numerazione esadecimale. Anche questo è un sistema di numerazione posizionale, ma ha sedici cifre, che sono tutte le cifre del sistema decimale da 0 a 9, più le lettere A, B, C, D, E, F, che rappresentano rispettivamente i numeri 10, 11, 12, 13, 14 e 15. Quindi, il sistema esadecimale ha base 16, e come negli altri sistemi posizionali, il valore di ogni cifra dipende dalla sua posizione. Come è lecito aspettarsi a questo punto, le diverse posizioni rappresentano nel sistema esadecimale potenze del 16. Facciamo qualche esempio: (2F) 16 = 2*16 1 + 15*16 0 = 2*16 + 15*1 = 32 + 15 = (47) 10 (A3B) 16 = 10*16 2 +3*16 1 + 11*16 0 = 10*256 + 3*16 + 11*1 = 2560 + 48 + 11 = (2619) 10 (125) 16 = 1*16 2 +2*16 1 + 5*16 0 = 1*256 + 2*16 + 5*1 = 256 + 32 + 5 = (293) 10 Come prima, abbiamo imparato a convertire un numero esadecimale in un numero decimale! Dobbiamo solo stare attenti a ricordarci che A = 10, B = 11, C = 12, D = 13, E = 14 e F = 15.

Per fare la conversione inversa, cioè convertire un numero da decimale a esadecimale, si procede con il metodo delle divisioni successive, così come abbiamo fatto per le conversioni di numeri decimali in binario e in ottale: si divide per 16 ripetutamente, fino a che si raggiunge un quoziente nullo, e si prendono i resti della divisione (che vanno da 0 a 15, quindi cifre esadecimali, stando attenti a sostituire i numeri superiori al 9 con le lettere opportune) in ordine inverso. Facciamo un esempio: vogliamo convertire in esadecimale il numero (194) 10 : 194:16 = 12 con resto 2 12:16 = 0 con resto 12 C Il numero esadecimale ottenuto è allora (C2) 16. Facciamo la conversione inversa per la prova: (C2) 16 = 12*16 1 + 2*16 0 = 12*16 + 2*1 = 192 + 2 = (194) 10 Ora sappiamo convertire un numero decimale in un numero esadecimale! Come abbiamo accennato all inizio di questo paragrafo, il sistema esadecimale nasce della necessità di raggruppare i bit in gruppi di 4, quindi ci aspettiamo di poter trasformare un numero da esadecimale a binario sostituendo ogni cifra esadecimale con il corrispondente gruppo di 4 bit, e viceversa, così come accadeva per il sistema ottale con gruppi di 3 bit. Infatti, se riprendiamo la tabella precedente, notiamo che serve un gruppo di 4 bit per formare una cifra esadecimale. binario esadecimale decimale 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15 10000 10 16 10001 11 17 10010 12 18 10011 13 19

Sfruttando questa osservazione, possiamo imparare a convertire un numero binario in esadecimale, e viceversa, semplicemente sostituendo a ogni cifra esadecimale un gruppo di 4 bit, e a ogni gruppo di 4 bit una cifra esadecimale nella conversione inversa. Facciamo qualche esempio: vogliamo convertire in binario il numero (C3) 16. Poiché risulta, su 4 bit, C = 1100 3 = 0011 otteniamo il numero binario (1100-0011), cioè (11000011) 2. Ancora un esempio, stavolta al contrario, convertiamo un numero da binario a esadecimale: vogliamo convertire in esadecimale il numero (11101) 2. Procediamo, come prima, raggruppando i bit a gruppi di 4 (partendo da destra), e trasformando ogni gruppo nella corrispondente cifra esadecimale. Risultano due gruppi di 4 bit, cioè (1-1101), e poiché abbiamo 0001 = 1 1101 = 13 = D otteniamo il numero esadecimale (1D) 16. Per prova, convertiamo in decimale i due numeri: (11101) 2 = 1*2 4 + 1*2 3 + 1*2 2 + 0*2 1 + 1*2 0 = 16 + 8 + 4 + 1 = (29) 10. (1D) 16 = 1*16 1 + 13*16 0 = 16 + 13 = (29) 10.