nei calcolatori, tutti i dati sono rappresentati con numeri:
i numeri sono rappresentati come sequenze di zeri e uni
rappresentazione binaria
di solito i numeri si scrivono usando dieci cifre:
0, 1, 2, 3, 4, 5,
6, 7, 8 e 9
in binario, se ne usano solo due: 0 e 1
a parte questo, è lo stesso sistema
sequenza dei numeri
in decimale:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 …
metodo:
lo stesso sistema si può usare anche con meno cifre
otto cifre
sistema usato abbastanza spesso
cifre 0, 1, 2, 3, 4, 5, 6 e 7
sequenza con otto cifre
cifre 0, 1, 2, 3, 4, 5, 6 e 7
stesso sistema:
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 …
cambia solo che le cifre non finiscono con 9 ma con 7
sistema con otto cifre
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 …
ultima cifra 7
dopo 7 c'è 10
stesso metodo: dopo l'ultima cifra si mette 1 davanti
altri numeri
dopo 7 c'è 10
poi 11, 12, ecc.
dopo 17 c'è 20
numeri a tre cifre
0 1 2 3 … 6 7 10 11 … 16 17 20 21 … 76 77 100 101
sempre lo stesso sistema:
dopo 77 c'è 100
ottale ↔ decimale
sono sequenze diverse:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 …
ma i numeri che devono rappresentare sono gli stessi
11 con otto cifre = 9 con dieci cifre
16 con otto cifre = 14 con dieci cifre
ecc.
numeri in rappresentazioni diverse
la sequenza indica i numeri zero, uno, due, …
questo a prescindere dal numero di cifre
con dieci cifre il centesimo numero è 100
con otto cifre è 144
vari sistemi di uso comune
sistema binario
usato perchè è facile realizzare circuiti che:
cifre binarie, ossia 0 e 1
sequenza in binario
stesso sistema:
con due cifre, dopo 0 e 1 le cifre sono finite
0 1 10 11 …
tre cifre
0 1 10 11 …
poi?
è finita anche la seconda cifra (dopo 1c non c'è 2c)
0 1 10 11 100 101 …
valori dei numeri
la sequenza indica sempre i numeri in ordine:
0 zero 1 uno 10 due 11 tre 100 quattro 101 cinque 110 sei ...
funziona?
si devono poter rappresentare tutti i numeri
il numero decimale 4231 è il quattromiladuecentotrentunesimo della sequenza (senza contare lo zero)
si rappresenta come il quattromiladuecentotrentunesimo della sequenza dei numeri binari (senza contare lo zero)
0 1 primo 10 secondo 11 terzo 100 quarto 101 quinto … 1000010000111 quattromiladuecentotrentunesimo
la sequenza non finisce mai, prima o poi il numero c'è
perchè non usare il sistema decimale?
è facile dal punto di vista tecnologico realizzare sistemi per memorizzare e manipolare dati rappresentati solo come zeri e uni
problema: se i dati sono in decimale, come faccio?
il programma della calcolatrice
nel calcolatore i dati sono in binario
l'utente li digita in decimale
come funziona?
conversioni
l'utente digita i numeri in decimale
il programma li converte in binario
il programma li somma in binario
il programma converte il risultato in decimale
operazioni
conversione da decimale a binario e viceversa
somme, sottrazioni, ecc. con valori in binario
per entrambe le cose:
serve la descrizione matematica di questi sistemi
uno in prima posizione
in ottale, dopo 7 c'è 10, 11, 12
questi numeri rappresentano otto, nove, dieci, ecc.
7 sette 10 otto = otto + zero 11 nove = otto + uno 12 dieci = otto + due 13 undici = otto + tre 14 dodici = otto + quattro ...
quindi: 1 in prima posizione indica 8
due in prima posizione
14 dodici = otto + quattro 15 tredici = otto + cinque 16 quattordici = otto + sei 17 quindici = otto + sette 20 sedici = otto + otto + zero = due×otto 21 diciassette = otto + otto + uno = due×otto + uno ...
uno in prima posizione è otto
due è sedici
posizione in decimale
16 è dieci più sei
24 è due per dieci più quattro
due cifre, in generale
per numeri di due cifre, in decimale:
yx = y×10 + x
in ottale:
yx = y×8 + x
tre cifre, in generale
stesso sistema, con otto o due al posto di dieci
base
numero usato al posto del dieci
è il numero di cifre
valore di un numero
in base b:
zyx indica z per base al quadrato più y per base più x
più cifre
stessa cosa:
regola generale
dato un numero in base qualsiasi:
formula
numero ckck-1…c1c0
base b
ckck-1…c1c0
indica
ck×bk + ck-1×bk-1 + … + c1×b1 + c0×b0
nota: b1=b e b0=1
vale per b qualsiasi: dieci, otto, due, sedici, ecc.
basta che b>1
sistemi posizionali
la cifra 2 significa varie cose a seconda della posizione:
il valore cambia a seconda della posizione
per questo si chiamano sistemi posizionali
sistemi non posizionali
esempio: numeri romani (I, II, III, IV, ecc.)
la prima I in II indica uno
la I in IV indica meno uno
stessa posizione, valore diverso = sistema non posizionale
conversioni
passaggio da una base all'altra
da decimale a binario
da binario a decimale
da binario a ottale
…
principio della conversione
si usa sempre la definizione di numero:
ckck-1…c1c0
indica
ck×bk + ck-1×bk-1 + … + c1×b1 + c0×b0
il valore della somma deve essere lo stesso anche se si cambia base
2×10 + 1 = 2×8 + 5 = 1×16 + 0×8 + 1×4 + 0×2 + 1×1
quindi 21 in decimale è 25 in ottale e 10101 in binario
serve un metodo
conversione verso il sistema decimale
basta usare la definizione e fare i calcoli
esempio (ovvio): conversione da decimale a decimale
il valore decimale di 3284 è:
3284 = 3 2 8 4
1000 100 10 1
= 3*1000 + 2*100 + 8*10 + 4*1
deriva dalla definizione
conversione da binario
stessa formula, ma le cifre si moltiplicano per 1, 2, 4, 8, ecc.
il numero binario 10110 vale:
10110 = 1 0 1 1 0
16 8 4 2 1
= 1*16 + 0*8 + 1*4 + 1*2 + 0*1
= 16+4+2 = 22
in decimale: 22
da ottale a decimale
si usano le potenze di otto: 1, 8, 64, 512, 4096, ecc.
esempio: il numero ottale 42703 in decimale è:
42703 = 4 2 7 0 3 =
4096 512 64 8 1
= 4*4096 + 2*512 + 7*64 + 0*8 + 3*1 =
= 17859
in decimale è 17859
altri esempi
altri esempi ancora
da decimale ad altra base
si usa un metodo diverso
è sempre basato sulla definizione del valore di un numero
usa quoziente e resto
sette diviso due=quoziente tre, resto uno
in Python: 7//2 vale 3 mentre 7%2 vale 1
divisioni successive
per convertire n da decimale a binario:
finisce quando il quoziente è zero
esempio di divisioni successive
decimale 319 in binario
si prendono i resti in ordine inverso
(dal fondo alla cima)
in binario: 100111111
da decimale a ottale
stesso sistema
invece di dividere per due si divide per otto
conversione di 319 in ottale:
resti in ordine inverso: 477
questo è il numero in ottale
esercizio
numero decimale 6812
convertirlo in binario
soluzione
in binario è 1101010011100
esercizio
numero decimale 1209 in base otto
soluzione
viene 2271
esercizio
numero in base sei 4215, convertirlo in base dieci
soluzione
era da altra base a dieci
basta fare i calcoli
4×63 + 2×62 + 1×61 + 5×60 = 864 + 72 + 6 + 5 = 947
esempio
Convertire il numero decimale 92341 in base cinque:
viene 10423331
divisioni successive: perchè funziona?
punto di partenza:
divisioni successive: dimostrazione (1)
numero n da convertire in base b
=trovare le cifre ckck-1…c1c0 in base b
per definizione:
n = ck×bk + ck-1×bk-1 + … + c1×b1 + c0×b0
divisioni successive: dimostrazione (2)
n = ck×bk + ck-1×bk-1 + … + c1×b1 + c0×b0
si dividono entrambi i membri di questa equazione per b
n/b = (ck×bk + ck-1×bk-1 + … + c1×b1 + c0×b0)/b
= ck×bk-1 + ck-1×bk-2 + … + c1 + c0/b
divisioni successive: dimostrazione (3)
n/b = ck×bk-1 + ck-1×bk-2 + … + c1 + c0/b
divisioni successive: dimostrazione (4)
n/b = ck×bk-1 + ck-1×bk-2 + … + c1 + c0/b
divisioni successive: dimostrazione (5)
n/b = ck×bk-1 + ck-1×bk-2 + … + c1 + c0/b
è il resto della divisione n/b
non finisce qui…
divisioni successive: dimostrazione (6)
n/b = ck×bk-1 + ck-1×bk-2 + … + c1 + c0/b
il quoziente di n/b è la parte intera della divisione
qui: ck×bk-1 + ck-1×bk-2 + … c1
per definizione di numero: in base b è ckck-1…c1
dividendo si ottiene c1 come resto, ecc.
ecc.
basi diverse da dieci
esempio: convertire da base cinque a base otto
esempio di conversione
numero 3421 in base cinque
convertirlo in ottale:
il numero in ottale è 746
alcune conversioni semplici
da base due a otto o viceversa:
tre bit = una cifra ottale
questo perchè 8 = 2×2×2
per esempio, con sei cifre binarie:
d1×8+d0 =
= c5×2×2×2×2×2 + c4×2×2×2×2 + c3×2×2×2 + c2×2×2 + c1×2 + c0
= (c5×2×2 + c4×2 + c3 ) × 8 + (c2×2×2 + c1×2 + c0)
la prima cifra ottale d1 è c5×2×2 + c4×2 + c3
la seconda cifra ottale d2 è c2×2×2 + c1×2 + c0
da binario a ottale
in pratica: ogni tre bit sono una cifra ottale
11010111001 = 011 010 111 001
--- --- --- ---
3 2 7 1
= 3271
serviva uno zero davanti per ottenre una terzina
da ottale a binario
ogni cifra ottale sono tre bit
101 010 001 111 010
--- --- --- --- ---
52172 = 5 2 1 7 2
= 101 010 001 111 010
= 101010001111010
conversioni facili, in generale
se una delle due basi è potenza n-esima dell'altra
allora n cifre sono una
da binario a esadecimale e viceversa
esadecimale = base sedici
da binario a esadecimale:
10101111001 = 0101 0111 1001
---- ---- ----
5 7 9
= 579
da esadecimale a binario:
0111 1001 0001
---- ---- ----
791 = 7 9 1
= 0111 1001 0001
= 011110010001
esadecimale
finora: basi minori di dieci
il meccanismo funziona anche con basi maggiori
esadecimale: sedici cifre
servono cifre in più per dieci, undici, …
si usano A, B, C, D, E ed F
successione numeri in esadecimale
stesso sistema: prima le cifre, quando finiscono 10, ecc.
la successione dei primi numeri espressi in esadecimale:
0 zero 1 uno 2 due 3 tre 4 quattro 5 cinque 6 sei 7 sette 8 otto 9 nove A dieci B undici C dodici D tredici E quattordici F quindici 10 sedici 11 diciassette 12 diciotto 13 diciannove 14 venti 15 ventuno ...
esadecimale: conversioni
solito sistema:
A2F = 10×16×16 + 2×16 + 15 = 2607
da decimale a esadecimale:
conversioni facili
16=24
una cifra esadecimale sono quattro bit
e viceversa
generalizzazione
sistema posizionale=
le cifre rappresentano valori da 0 a b-1
funzione val(cifra) che dà il valore di ogni cifra
esempio di sistema posizionale
conversioni
♠µ¥ in decimale vale:
val(♠) × 12×12 + val(µ) × 12 + val(¥) =
11 × 12×12 + 6 × 12 + 3 =
1659
il numero decimale 1001 si converte così:
viene µ♠©
numero e numerale
12, XII e dodici sono tre modi diversi per rappresentare lo stesso numero
sono quindi tre numerali che rappresentano lo stesso numero
addizioni
solito modo:
2 7 5 +
1 7 5 4 =
---------
↓
5+4=9
9
↓
7+5=12 (ossia 2 con riporto 1)
1 2
↓
2+7+1=10 (ossia 0 con riporto 1)
1 0
↓
1+1=2
----------
2 0 2 9
addizioni con base generica
somma di cifre nella base: 4+5=11 in ottale, ecc.
esempio: somma in ottale
5 2 3 +
1 3 6 1 =
---------
↓
3+1=4
4
↓
2+6=otto, in ottale 10
ossia 0 con riporto di 1
1 0
↓
5+3+1=nove, in ottale 11
ossia 1 con riporto di 1
1 1
↓
1+1=2
---------
2 1 0 4
esempio: somma in binario
1 0 0 1 1 +
1 0 0 1 1 1 =
-------------
↓
1+1=due, in binario 10
ossia 0 con riporto 1
1 0
↓
1+1+1=tre, in binario 11
ossia 1 con riporto 1
1 1
↓
0+1+1=due, in binario 10
ossia 0 con riporto 1
1 0
↓
0+0+1=1
↓
1+0=1
↓
1
-------------
1 1 1 0 1 0
somma con base generica
stesso sistema
si somma cifra per cifra
ma la somma va fatta nella base:
esercizio di somma
Sommare i numeri esadecimali 1F2 e BA4
soluzione
1 F 2 +
B A 4 =
----------
↓
2+4=6
6
↓
F+A=quindici+dieci=
=venticinque=sedici+nove=
19 in esadecimale (9 con riporto di 1)
1 9
↓
1+B+1=uno+undici+uno=tredici=
D in esadecimale
----------
D 9 6
esercizio di somma
sommare i numeri in base tre 2201 e 202
soluzione
2 2 0 1 +
2 0 2 =
-----------
↓
1+2=tre=tre+0
in base tre: 10
cioè 0 con riporto di 1
1 0
↓
0+0+1=1
1
↓
2+2=quattro=tre+uno
in base tre 11
cioè 1 con riporto di 1
1 1
↓
2+0+1=tre=tre+zero
in base tre 10
cioè 0 con riporto di 1
1 0
↓
0+0+1=1
-----------
1 0 1 1 0
esercizio di somma
sommare i numeri binari 11011001 e 11110000111
soluzione
1 1 0 1 1 0 0 1 +
1 1 1 1 0 0 0 0 1 1 1 =
-------------------------
↓
1+1=0 con riporto 1
↓
0+1+1=0 con riporto 1
↓
0+1+1=0 con riporto 1
↓
1+0+1=0 con riporto 1
↓
1+0+1=0 con riporto 1
↓
0+0+1=1
↓
1+0=1
↓
1+1=0 con riporto 1
↓
0+1+1=0 con riporto 1
↓
0+1+1=0 con riporto 1
↓
0+1+1=0 con riporto 1
↓
0+0+1=1
-------------------------
1 0 0 0 0 1 1 0 0 0 0 0
dimostrazione del metodo di somma
punti di partenza:
dimostrazione del metodo di somma
somma di:
risultato:
ak-1×bk-1 + … + a0×b0 + bk-1×bk-1 + … + b0×b0 =
(ak-1+bk-1)×bk-1 + … + (a0+b0)×b0
si possono quindi sommare le cifre
dimostrazione del metodo di somma: primo riporto
a0 e b0 possono andare da 0 a b-1
la somma può superare b-1
(massimo valore per una singola cifra)
il massimo è (b-1)+(b-1)=b+(b-2)
in base b è 1c dove c è la cifra che rappresenta b-2
l'1 è il riporto
dimostrazione del metodo di somma: riporti successivi
si sommano due cifre più un eventuale riporto 1
il massimo è (b-1)+(b-1)+1=2b-1=b+(b-1)
in base b, è 1d, dove d è la cifra che rappresenta b-1
in qualsiasi base, il riporto può valere al massimo uno
dimostrazione per induzione
meccanismo usato:
si assume che il riporto precedente sia massimo uno
si dimostra che questo è massiumo uno
dimostrazioni in cui si assume un fatto per dimostrarlo in una condizione successiva si dicono dimostrazioni per induzione
riporto nel caso binario
due bit più un riporto: massimo 1+1+1=11
la singola somma è un'addizione di tre bit che produce un risultato a due bit
si vedranno circuiti in grado di produrre i due bit a partire da quei tre
numero di bit
nella maggior parte dei casi pratici, ogni numero si rappresenta con una quantità fissata di bit
esempio: 64
il risultato di una somma può avere un bit in più
addendi a 64 bit, risultato a 65 (non rappresentabile)
aumento numero di bit: esempio
addendi a otto bit:
11010001 + 01100001 = ----------- 100110010
risultato a nove
non un numero rappresentabile con otto bit
overflow
condizione in cui:
sottrazione
stesso metodo della base dieci
sottrazione per cifre con eventuale riporto di -1
una sottrazione in decimale
3 2 1 -
6 2 =
---------
↓
1-2=-1, ossia 9-10
cifra 9 e riporto -1
-1 9
↓
2-6-1=-5, ossia 5-10
cifra 5 e riporto -1
-1 5
↓
3-1=2
2
---------
2 5 9
9-10 = risultato è 9, riporto -1
(-10 all'ultima cifra = -1 alla penultima, ecc.)
una sottrazione in ottale
2 7 1 -
1 3 6 =
---------
↓
1-6=-5=3-8
cifra 3 e riporto -1
-1 3
↓
7-3-1=3
3
↓
2-1=1
1
---------
1 3 3
perchè 3-8?
perchè il riporto è -1?
riporti nelle sottrazioni in ottale
base 8
1-6 viene -5, ma non esiste una cifra per -5
ma -5 è uguale a (-1)×8+3
simile a 1×8+3, che è 13 in ottale
(-1)×8+3 è come due cifre -1 e 3
-1 è il riporto
3 la cifra del risultato
peso delle cifre
2 7 1 -
1 3 6 =
---------
↓
1-6=-5=3-8
cifra 3 e riporto -1
-1 3
↓
7-3-1=3
3
…
valori delle cifre: c2×8×8 + c1×8 + c0
un -8 all'ultima cifra vale -8
il -1 alla penultima vale (-1)×8
il -8 all'ultima cifra è -1 alla penultima
(-8 all'ultima cifra=-1 alla penultima)
sottrazione in binario
1 1 0 0 1 0 0 -
1 0 0 1 0 1 1 =
----------------
↓
0-1=-1=1-2
ossia 1 con riporto di -1
↓
0-1-1=-2=0-2
ossia 0 con riporto di -1
↓
1-0-1=0
↓
0-1=-1=1-2
ossia 1 con riporto di -1
↓
0-0-1=-1=1-2
ossia 1 con riporto di -1
↓
1-0-1=0
↓
1-1=0
----------------
0 0 1 1 0 0 1
-2 all'ultima cifra=-1 alla penultima, ecc.
rappresentabilità del risultato
sottrazione fra due positivi: minore del primo
no overflow possibile
il risultato può essere minore di zero
=non rappresentabile in questi sistemi per i positivi
underflow=valore troppo basso per essere rappresentato
moltiplicazione
come in decimale:
moltiplicazione in ottale
412 ×
52 =
------
1024 ← 412 × 2
(tenendo conto che 4×2=10)
2462 ← 412 × 5
(tenendo conto che 5×2=12 e 5×4=24)
------
25644 ← somma
moltiplicazione in binario
ogni cifra può essere solo 0 o 1
primo × cifra-del-secondo=
i singoli prodotti o sono il primo operando oppure valgono zero
moltiplicazione in binario: esempio
10111 ×
1101 =
---------
10111 ← 10111×1
00000 ← 10111×0
10111 ← 10111×1
10111 ← 10111×1
---------
100101011
ogni prodotto è zero oppure il primo operando spostato a sinistra
shift: translare un numero
(detto anche spostamento)
shifter: circuiti che realizzano uno shift
moltiplicazione per una potenza della base
è uguale a uno shift
esempio: moltiplicazione per due (10) in binario:
110001 ×
10 =
--------
000000 ← 110010 × 0
110001 ← 110010 × 1
--------
1100010
stesso numero spostato a sinistra di una posizione
moltiplicazione per una potenza della base
moltiplicare per otto (1000):
110001 ×
1000 =
----------
000000 ← 110010 × 0
000000 ← 110010 × 0
000000 ← 110010 × 0
110001 ← 110010 × 1
----------
110001000
stesso numero spostato a sinistra di tre posizioni
moltiplicazione per una potenza della base
in generale: n-esima potenza della base=10...0 con n zeri
l'unico prodotto intermedio è quello generato da 1
è il numero di partenza spostato di n posizioni
moltiplicazione per potenze di due
è come spostare i bit
in Python: a<<b è
a spostato di b posizioni
è come aggiungere b zeri in fondo
print 1<<4 print 5<<2
stampa 16 e 20:
divisioni per potenze di due
spostamento a destra dei bit
in Python: a>>b è a spostato a destra di b posizioni
i bit che "escono" si perdono
massimo numero rappresentabile
in hardware, i numeri si rappresentano con un numero prefissato di bit
esempio: 64
massimo numero senza segno rappresentabile: sessantaquattro uni
1111111111111111111111111111111111111111111111111111111111111111 → 1×263 + 1×262 + 1×261 + 1×260 + 1×259 + 1×258 + 1×257 + 1×256 + 1×255 + 1×254 + 1×253 + 1×252 + 1×251 + 1×250 + 1×249 + 1×248 + 1×247 + 1×246 + 1×245 + 1×244 + 1×243 + 1×242 + 1×241 + 1×240 + 1×239 + 1×238 + 1×237 + 1×236 + 1×235 + 1×234 + 1×233 + 1×232 + 1×231 + 1×230 + 1×229 + 1×228 + 1×227 + 1×226 + 1×225 + 1×224 + 1×223 + 1×222 + 1×221 + 1×220 + 1×219 + 1×218 + 1×217 + 1×216 + 1×215 + 1×214 + 1×213 + 1×212 + 1×211 + 1×210 + 1×29 + 1×28 + 1×27 + 1×26 + 1×25 + 1×24 + 1×23 + 1×22 + 1×21 + 1×20 = 9223372036854775808 + 4611686018427387904 + 2305843009213693952 + 1152921504606846976 + 576460752303423488 + 288230376151711744 + 144115188075855872 + 72057594037927936 + 36028797018963968 + 18014398509481984 + 9007199254740992 + 4503599627370496 + 2251799813685248 + 1125899906842624 + 562949953421312 + 281474976710656 + 140737488355328 + 70368744177664 + 35184372088832 + 17592186044416 + 8796093022208 + 4398046511104 + 2199023255552 + 1099511627776 + 549755813888 + 274877906944 + 137438953472 + 68719476736 + 34359738368 + 17179869184 + 8589934592 + 4294967296 + 2147483648 + 1073741824 + 536870912 + 268435456 + 134217728 + 67108864 + 33554432 + 16777216 + 8388608 + 4194304 + 2097152 + 1048576 + 524288 + 262144 + 131072 + 65536 + 32768 + 16384 + 8192 + 4096 + 2048 + 1024 + 512 + 256 + 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 18446744073709551615
massimo numero con n bit
1×2n-1 + 1×2n-2 + … + 1×21 + 1×20 = 2n-1
il successivo di 11…11 è 100…00
è il primo numero non rappresentabile: 2n
massimo rappresentabile: questo meno uno
64 bit bastano?
massimo rappresentabile: 18446744073709551615
esistono applicazioni che usano valori più grandi
si possono usare due numeri a 64 bit A e B per rappresentarne uno a 128
la coppia 〈A,B〉 rappresenta A×264 + B
esercizio
Convertire i due numeri decimali 591 e 211 in binario. Effettuare poi la somma in binario. Assumendo sedici bit, controllare se si è verificato l'overflow. In caso contrario, riconvertire il risultato in decimale, verificando se il risultato è effettivamente 802.
conversione 591
resti in ordine inverso: 1001001111
conversione 211
resti in ordine inverso: 11010011
somma dei due numeri
11 11111 ← riporti 1001001111 + 11010011 = ------------ 1100100010
rientra in sedici bit → no overflow
conversione 1100100010
1×29 + 1×28 + 0×27 + 0×26 + 1×25 + 0×24 + 0×23 + 0×22 + 1×21 + 0×20 = 512 + 256 + 0 + 0 + 32 + 0 + 0 + 0 + 2 + 0 = 802
esercizio
Convertire il numero decimale 53 e quello esadecimale F1 in binario. Moltipicare i due numeri binari così ottenuti e convertire il risultato in ottale.
conversione 52
resti dall'ultimo al primo: 110100
conversione F1
si potrebbe convertire prima in decimale e poi in binario
ma: 16 = 24
una cifra esadecimale = quattro bit
F1 = F 1 = 11110001
---- ----
1111 0001
moltiplicazione
il primo numero ha bit meno che valgono uno del secondo
conviene fare secondo per primo (meno addendi)
11110001 ×
110100 =
----------------
11110001
11110001
11110001
----------------
11000011110100
conversione in ottale
conversione a dieci e poi a otto
oppure: tre bit = una cifra ottale
11000011110100 = 011 000 011 110 100
--- --- --- --- ---
3 0 3 6 4
= 30364