Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Efficiente accesso a tabelle e matrici con lo stack pointer
<(REG A)+(REG B) *N°BYTE di A>→MAR
è particolarmente efficiente per accedere a tabelle e matrici. Con lo stack pointer, istruzioni come PUSH
o POP
permettono di inserire dati dai registri alla stack pila (o viceversa), di estrarre dati dalla pila e salvarli nei registri. Lo stack pointer punterà sempre alla cima della pila, quindi può essere sfruttato per indirizzare l'operando. Ad esempio, sia IND
l'indirizzo dell'operando:
PUSH(REGn)=IND(a)
(SP
+1→SP
) (REGn
)→PILA
(SP
)→MAR
((MAR
))→MBR
trovato l'operandoPOP(SP)+1=IND(a)
(SP
+1→SP
) (PILA
)→REGn
(SP
)→MAR
((MAR
))→MBR
trovato l'operando
NUMERAZIONE
Base decimale: 3 2 1 0
Esempio: 7352=7*10^3 +3*10^2 +5*10^1 +2*10^0
Si sceglie una base B, si scelgono B simboli che rappresentano i numeri da 0 a B-1: 0≤ ≤B-1. I numeri sono rappresentati dai coefficienti del polinomio moltiplicati per le potenze.
della base, indichiamo la base del sistema di numerazione nel seguente modo:SS-1 SS-2 1 0*B + *B + *B +...+ *B + *BB = ? A A A A A-2S S-1 S 1 0N ? A
La rappresentazione è posizionale poiché il peso associato alla cifra (cioè la potenza di B per cui viene moltiplicata) dipende dalla sua posizione.
Cambiamento di base: (da A a B) 1-1n n n-2 1 0N N + + + +X B X B X B...+ X B X B = A B n n-1 n-2 1 0
Come trovo i coefficienti? Metodo delle divisioni: divido ogni volta per B (il numero della nuova base)
( )( )+ + )X B( X B... X1 2 n-1n n n-2 1N + + + +X B X B X B...+ X B X = B n n-1 n-2 1 0 + ?X B0
Se continuo a dividere per B ottengo ogni volta un resto, un quoziente, e il coefficiente interessato:
( )( )+ + )X B(X B... X1 2 n? ( )( )+X B... X2 n+ ?X B0 ? 15X
E così via fino a. Questo metodo
funziona bene dalla base 10 a qualunque altra, ma presanun’altra base di partenza non è detto.
Numeri frazionali:rappresentazione della parte frazionaria in un’altra base.
Metodo delle moltiplicazioni:−1 ( )−2+¿ B … X −nX ¿F F ¿= =A B −1+B ¿X −1 −1 ¿B
Continuando a moltiplicare per B si ottiene:−1 ( )−2+¿ B … X −1 ( )−2+¿ B … X−n −nX X¿ ¿¿ = ¿−1+B ¿X −1+B ¿X−1 −1−1 ¿¿B∗B XE così via fino a −n
Metodo a colpo d’occhio: è possibile se una base è potenza dell’altra.
K 4=BB relazione esponenziale es: 16→2 →222 1
Rappresentazione in base 2 di un numero esadecimale:k k−1 1 0N N d 2 d 2 d 2 d 2= = + +…+ +16 2 k k−1 1 0 15
Si dice metodo a colpo d’occhio perché si trovano
ad occhio dei comodi raggruppamenti:- 8→2 k 2 1 0 2 1 0N N 3 1d 2 d 2 d 2 d 2 d 2 d 2= = +… ( + + )* +( + + )*2 28 2 k 5 4 3 2 1 0
- 16→2 5 3 80101 0011 1000
- 16→8Sono due potenze di due, bisogna intermediare con la base 20 6 1 5 2 0 4 7 80001100011010100001001111 8 D 4 2 7 16BASE ESADECIMALE: OPERAZIONI:0 00001 00012 0010 SOMMA SOTTRAZIONE3 0011 16+ 0 14 01005 0101 0 0 1 + 0 16 0110 1 1 (1)7 0111 0 0 (1)8 1000 0 19 1001 1 1 0A 1010 MOLTIPLICAZIONEB 1011C 1100D 1101 + 0 1E 1110F 1111 0 0 01 0 1Rappresentazione dei numeri nel calcolatore:poiché nel computer l’unità minima di informazione è il bit, un sistema fisico dotato di due stati stabili,in esso i numeri (e le informazioni) sono rappresentate in binario.Numeri negativi:il binario ha solo 2 simboli, 0 e 1, e non ha simboli per rappresentare il segno (+ e -),
Per questo si sono adottate diverse strategie.
Rappresentazione in modulo e segno: il primo bit rappresenta il segno e gli altri rappresentano il modulo del numero. Facendo un esempio con un numero a 8 bit, invece di poter rappresentare i numeri da 0 a 256, possiamo rappresentare i numeri da -127 a 127, ovvero da -1 a -1 poiché lo 0 è rappresentato 2 volte, come negativo e come positivo.
Complemento alla base di un numero: nella rappresentazione in complemento alla base con n cifre, le combinazioni rappresentano numeri positivi e negativi. Le combinazioni da 0 a -1 rappresentano numeri positivi, quelli negativi vanno da -1 a -2 e si rappresentano con la seguente definizione: sia X un numero positivo, il suo corrispondente negativo (-X) è rappresentato come il numero -X, cioè -X si rappresenta come il complementare di X rispetto al numero massimo.
Esempio con un numero con base dieci: 2^10, n=2, quindi si hanno 10210 configurazioni possibili, da 0 a...
- 49 (cioè -1) rappresentano i numeri positivi,
- 2210 2¿da 50 (cioè a 99 ( cioè -1) come previsto dal complemento. Se X=36, -X in102 2complemento ( in questo caso si dice complemento a 10) è -X=100-36=64.
- 10REGOLA PRATICA: il complemento a 10 si trova analizzando le cifre a partire da destra: gli zerifino alla prima cifra significativa si riportano tali e quali, della prima cifra significativa si fa ilcomplemento a 10 di tutte le altre il complemento a 9.
- Esempio con un numero base 2: 17525B=2 n=5, quindi si hanno configurazioni possibili, da 0 a 01111 (cioè -1)2 252 5¿rappresentano i numeri positivi, da 10000 (cioè a 10000 ( cioè -1) come previsto22dal complemento.
- Se X=01011, -X in complemento a 2 è 100000-01011=10101.
- REGOLA PRATICA: l complemento a 2 si trova partendo dal bit meno significativo, si riportanoinvariati tutti i bit fino al primo bit a 1 compreso, si complementano i rimanenti bit (0→1).
e1→0).Complemento alla base -1 di un numero:nella rappresentazione in complemento alla base -1 di un numero con n cifre le combinazioni rappresentano numeri positivi e negativi. Le combinazioni che vanno da 0 a -1 rappresentano i numeri positivi. Le n combinazioni che vanno da -1 a -2 rappresentano i numeri negativi, con la seguente definizione: dato un numero positivo X, il suo corrispondente negativo è dato da -1)-X.
Esempio con un numero base 10 (detto complemento a 9): X=36 B=10 n=2, quindi in complemento alla base -1 è 99-36=63
Esempio con un numero base 2: (detto complemento a 1) X=01011 B=2 n=5, quindi il complemento alla base-1 è -1)-X=(100000-1)-X=11111-01011 (si ottiene complementando ogni singolo bit 0→1 e 1→0)
N.B. il complemento alla base si può ottenere sommando 1 al complemento alla base -1
Considerazioni sui complementi alla base e alla base-1: nelle rappresentazioni in complemento
le rappresentazioni dei numeri negativi sono definite solo quando si è stabilito il numero delle cifre, per esempio i complementi a 1 e a 2 per X=36 B=10 e n=2 è 64 per il complemento a 2 e 63 per il complemento a 1, invece per X=36 B=10 e n=3 è 964 per il complemento a 2 e 963 per il complemento a 1. Tutti questi numeri rappresentano comunque il numero -36! In complemento a 2 i numeri positivi sono rappresentati dal loro modulo e hanno il bit più significativo (segno) posto a 0 o a 1, metà delle configurazioni sono perciò riservate ai positivi n-1 e metà ai negativi. Il più piccolo numero rappresentabile è -2^(n-1), il più grande è 2^(n-1)-1 e lo zero ha un'unica rappresentazione (tutti zeri). In complemento a 1 il più piccolo è -2^(n-1)+1, il più grande è -1 e lo zero ha due rappresentazioni, una come +0 e una come -0 (tutti zeri e tutti uni). In altre parole ilcomplemento a 2 divide le rappresentazioni possibili equamente tra positivi e negativi considerando lo zero come primo positivo, il complemento a 1 lo fa considerandone uno positivo e uno negativo. In questo modo il complemento a 1 può rappresentare un negativo in meno rispetto al complemento a 2.
Il complemento alla base (o a 2) è utile perché permette alla macchina di effettuare la somma algebrica senza dover operare una serie di confronti tra i due operandi (per determinare il segno del risultato), operazione che richiederebbe parecchio tempo. Inoltre, con la tecnica del complemento si può utilizzare un solo circuito per effettuare sia addizione che sottrazione.
Esempio: proviamo a calcolare A-B, sappiamo che -B si rappresenta come (-B), non considerando il riporto.
A-B = A+(-B)
A = 01001
B = 00110
A + (-B) = 01001 + 00011 = 11010
Esempio con B' in complemento a 2:
0011 (1)
00011
Circuito di somma e sottrazione:
A-B = A + B' = A + (-B) in complemento a 2
22n2= A+ -1-B) in complemento a 1¿Sia S una stringa di bit tali che:sia I un numero di cui vorremmo fare ilnegativo:se S=0 →I non cambiase S=1 →restituisce ilcontrario (cioè I’,complementato).RSia ora A e B i bit addendi, iliRriporto della somma precedente, C il risultato e iloriporto di questa coppia. I risultati a seconda degliingressi possono essere: 18Se ora procediamo collegando i singoli blocchi possiamocostruire un vero e proprio circuito sommatore-sottrattore:C C C a a a b b bIl risultato C= gli addendi A= e B= ,2 1 0 2 1 0 2 1 0l’operazione svolta è quindi C=A+B 19Si presentano due casi:1) se S=0 allora i bit b rimangono invariati e otteniamo una somma normale: