IL CODICE BINARIO

a cura di Daniele Timpano

Introduzione

COS'È L'INFORMATICA

Per poter comprendere efficacemente il significato e l’importanza della codifica binaria nel mondo dell’informatica, è necessario fare un piccolo passo indietro e cercare una definizione opportuna per questa scienza. Solo dalla conoscenza dell’informatica e delle sue componenti, è possibile dedurre il significato del codice binario. 

L'origine del termine

Coniato da Philippe Dreyfus nel 1962s, il significato di informatica può essere sintetizzato come segue: insieme dei varî aspetti scientifici e tecnici che sono specificamente applicati alla raccolta e al trattamento dell’informazione e in particolare all’elaborazione automatica dei dati, come supporto in svariati campi.

Ma questo insieme di parole, cosa vuol dire? 


Concentriamoci sul concetto che sta alla base dell’informatica: l’ Informazione. L'informazione è l’oggetto della nostra investigazione e viene delegata a un calcolatore, su opportune indicazioni e istruzioni del programmatore.

IL CALCOLATORE E GLI ALGORITMI

Un calcolatore è un esecutore di algoritmi. Non entreremo nello specifico del calcolatore in questo corso, ma ci assicureremo di mettere da parte questi tre concetti prima di iniziare a lavorare sul codice binario: 

  • algoritmi, sequenze di istruzioni;

  • calcolatore, esecutore di algoritmi;

  • informazione, oggetto dell’investigazione; 

 

Algoritmi, calcolatore e informazione, o per meglio dire gestione dell’informazione, sono tre concetti di base fondamentali. Non a caso, un’ulteriore definizione di informatica viene data dall’Association for Computing Machinery menzionando proprio uno di questi elementi, in maniera molto pragmatica: l’informatica è lo studio degli algoritmi

Approfondiremo gli algoritmi nella prossima lezione.

Come operare con i calcolatori?

 

Fornire istruzioni ai nostri calcolatori però ha una grande difficoltà: il calcolatore non parla la nostra lingua. Le istruzioni verbali che potremmo dare a un nostro compagno di classe per portare a termine un compito, non verrebbero comprese da una macchina. 

 

I calcolatori sono in grado di operare con informazioni binarie.

 

Un bit in informatica rappresenta un preciso stato fisico, di alta o bassa tensione nella cella di memoria del calcolatore.  Da un punto di vista logico, l’informazione del bit può assumere alternativamente i valori {0,1}, unici simboli che possiamo utilizzare. 


 

Molto spesso, per ragioni di praticità, si tende a rappresentare sequenze di bit più lunghe. Un Byte è una sequenza di 8 bit ed esprime 2^8 numeri diversi, 256 numeri (ad esempio gli interi [0,255])

 

Altri multipli del bit: 

• Byte = 8 bit = 23 bit

• KiloByte (kB) = 103 Byte = 1011 bit  = 210 bit

• MegaByte (MB) = 106 Byte = 1014 bit = 220 bit

• GigaByte (GB) = 109 Byte = 1017 bit = 230 bit

• TheraByte (TB) = 1012 Byte = 1020 bit = 240 bit


 

Capite dunque l’importanza di operare con la codifica binaria, cioè con la rappresentazione di un numero come una sequenza di 0 e di 1. Vediamo dunque alcune operazioni aritmetiche molto semplici.

Codifica in base 10 vs Codifica in base 2

La codifica in base 10 è una notazione posizionale, il ché vuole dire attribuire un significato differente a seconda della posizione. 

 

ES: numero di 5 cifre (fornire esempio)

Svolgi tu l’es: sciogli le 5 cifre in potenze del 10 

 

Quanti numeri possiamo scrivere invece con n bit? 

La domanda a cui dobbiamo rispondere è la seguente, quante possibili combinazioni di n elementi puoi creare se ogni elemento lo scegli tra due 2 elementi diversi? 

 

SPAZIO VUOTO PER IL RAGAZZO 

Risposta: 2^m 

 

Dunque, proviamo ad associare il numero di bit a uno specifico intervallo di rappresentabilità: 

 

con 1 cifra in base 2, [0,2-1]

copro Con 4 cifre in base 2, [0, 2^4-1]

copro Con 8 cifre in base 2, [0, 2^8-1]

copro Con 12 cifre in base 2, [0, 2^12 -1]

 

[Magari anche qui fare la prima noi e poi lasciare lo spazio allo studente]

DALLA BASE 2 ALLA BASE 10

La generica definizione di un numero in notazione posizionale è questa:

𝑁2 = 𝑎n−1 × 2^n−1 + 𝑎n−2 × 2^n−2+ . . +𝑎0 × 2^0

 

ESEMPIO: 

(101) 2 = 1 × 2^2 + 0 × 2^1 + 1 × 2^0 = (5)10

Esercizi risolti

Esercizio 1

Trasforma un numero in base 2 in base 10

DALLA BASE 10 ALLA BASE 2

Metodo delle divisioni successive

  1. Parto dal numero in base 10 e divido per due (DIVISIONE INTERA);

  2. “Conservo” il resto della divisione intera;

  3. Procedo dividendo per due il risultato della divisione intera del passaggio precedente;

  4. Continuo così fino a quando il risultato della divisione non diventa 0

  5. Il mio numero in base 2 sarà la sequenza degli 1,0 di resto, al contrario, dall’ultimo al primo.

Esercizi risolti

Esercizio 2

Trasforma un numero dalla base 10 alla base 2

LE OPERAZIONI CON

NUMERI NATURALI

Somma e differenza

Si ritorna alle elementari con i numeri in base 2: le somme si fanno in “colonna” ed esattamente come per i decimale

si considera il riporto:

  1. • 0 + 0 = 0 riporto 0

  2. • 1 + 0 = 1 riporto 0

  3. • 0 + 1 = 1 riporto 0

  4. • 1 + 1 = 0 riporto 1

Esercizi risolti

Esercizio 3

Svolgi questa somma e utilizza correttamente il riporto

IL BIT DI CARRY

Probabilmente ti ricordi che poco fa abbiamo menzionato gli intervalli di rappresentabilità. Il fatto che un certo numero di bit possano codificare solo un determinato intervallo di numeri, implica che quando vado a sommare due numeri, debba prendere in considerazione l’eventualità che i bit utilizzati per codificare gli addendi, non siano sufficienti per codificare il risultato, ecco perché si avrà il cosiddetto bit di carry.

Esempio

1111

1010

= (1)1001

LE OPERAZIONI CON

NUMERI INTERI

Se volessimo utilizzare i nostri bit per esprimere un’informazione in più sul nostro numero, cioè il suo segno, come dovremmo fare?

Rappresentazione Modulo e Segno

È possibile dedicare il primo bit alla codifica del segno

• "1" il numero che segue è negativo

• "0" il numero che segue è positivo

 

L’intervallo di rappresentabilità in questo caso si riduce di un’unità, poiché stiamo “sprecando una codifica per lo zero che potrà essere indicato come segue: 

100000…. oppure 00000000…. = -/+ 0 

L’intervallo di rappresentabilità per n bit diventa dunque: 

−(2^n−1 − 1), 2^n−1 −1

Rappresentazione in complemento a 2

Pensiamo di “allocare” diversamente lo spazio nel mio intervallo di rappresentabilità:

In CP2 si usano:

• 2^𝑚−1 − 1 per valori positivi

• 1 per lo zero

• 2^𝑚−1 per i valori negativi

 

Si sceglie dunque di rappresentare un numero con m bit secondo il seguente criterio: 

• se 𝑋 è positivo o nullo scrivo 𝑿 in binario con 𝒎 bit e avrà la prima cifra 0 come conseguenza dell’intervallo di rappresentabilità,

• se 𝑋 è negativo scrivo 𝟐𝒎 − |𝑿| in binario con 𝒎 bit e avrà la prima cifra 1 come conseguenza dell’intervallo di rappresentabilità.

Anche qui il primo bit INDICA IL SEGNO, tuttavia INDICARE IL SEGNO E’ DIVERSO da ESSERE IL SEGNO. Cambiando semplicemente il primo bit non otteniamo il numero opposto:

 

• 45 = 0101101 𝐶𝑃2 se cambio di segno alla prima cifra

• 1101101 𝐶𝑃2 → −2^6 + 2^5 + 2^3 + 2^2 + 1 = = −64 + 45 = −19

  • Facebook - Bianco Circle
  • Instagram - Bianco Circle