Oppure

Loading
01/03/09 0:31
gioser
aggiungo una cosetta...

la rappresentazione dei numeri negativi con i numeri binari si fa con la regola del complemento a 2

ad es:

4dec = 100bin

su 8 bit si rappresenta come 00000100

in matemeatica
-4dec = -100bin

ma nel registro di un processore come si rappresenta il segno?

si fa il complemento a 1 di 00000100 e si ottiene 11111011 a questo punto si aggiunge 1 e si ottiene 11111100, che e' la rappresentazione in complemento a 2 di -4

la magia e' che i conti algebrici funzionano. Se faccio -4 + 6

11111100+
00000110=
---------
00000010

ottengo 2 :)

vediamo il caso esaustivo su 3 bit

011 3
010 2
001 1
000 0
111 -1
110 -2
101 -3
100 -4

vedo che vado da -(2^3)=-8 a (2^3)-1=7

questo è il link all'articolo sul complemento a 2 di wikipedia:
it.wikipedia.org/wiki/…

Ciao :)
aaa
01/03/09 11:28
theprogrammer
Tutto giusto ... ma

Postato originariamente da gioser:
la magia e' che i conti algebrici funzionano. Se faccio -4 + 6

11111100+
00000110=
---------
00000010

ottengo 2 :)


... a patto che il riporto venga ignorato (altrimenti la "magia" non funziona ... :-) )
aaa
01/03/09 11:44
gioser
Postato originariamente da theprogrammer:

Tutto giusto ... ma

Postato originariamente da gioser:
la magia e' che i conti algebrici funzionano. Se faccio -4 + 6

11111100+
00000110=
---------
00000010

ottengo 2 :)


... a patto che il riporto venga ignorato (altrimenti la "magia" non funziona ... :-) )


beh si... siamo in aritmetica modulare per il fatto che il registro di un microprocessore ha un numero finito di bit :D
aaa
01/03/09 12:02
theprogrammer
Postato originariamente da gioser:
beh si... siamo in aritmetica modulare per il fatto che il registro di un microprocessore ha un numero finito di bit :D


Non e' questo il punto. Mi riferivo al bit C (Carry) del registro di Stato del processore che, nel caso di aritmetica in C2 (in questo in particolare), deve essere ignorato dal software.
aaa
02/03/09 17:53
gioser
Postato originariamente da theprogrammer:

Non e' questo il punto. Mi riferivo al bit C (Carry) del registro di Stato del processore che, nel caso di aritmetica in C2 (in questo in particolare), deve essere ignorato dal software.


Corretto :)
Chi programma in Aasembler deve saper gestire correttamente i registri del carry, dell'overflow e del segno ... Meno male che non lo devo + fare. :D
Ultima modifica effettuata da gioser 04/03/09 19:52
aaa