Oppure

Loading
22/01/10 23:21
dengel
Ragazzi ho provato ad eseguire questo calcolo in complemento a 2 a 8 bit (quindi abbiamo (2^8-1) -1 = 127 numero massimo positivo esprimibile per nn ricadere nell'overflow e -2^8= -127 per quanto riguarda il massimo negativo esprimibile..

La mia domanda è questa: se calcolo (32-64) + 7 ---> al primo calcolo mi risulta

00100000 + 32 in binario
11000000 = -64 in complemento a 2
--------
11100000

Non dovrebbe essere -32 il risultato (non c'è overflow)?? il primo 1 sta per il segno negativo quindi risulta 1100000 ovvero 48 (32 + 16)...dove sbaglio?
Ultima modifica effettuata da dengel 22/01/10 23:33
aaa
22/01/10 23:58
Lawliet
Non ho capito da dove ti esce questa affermazione:
il primo 1 sta per il segno negativo

Ma non è vero, se hai studiato la rappresentazione del complemento a 2,da non confondere con la rappresentazione con modulo e segno che quello si parla del bit più significativo cioè il primo(forse per quello ti riferivi alla frase che ho quotato). Torniamo al tuo esercizio:

32 base 10 in binario fa 00100000 base 2, 64 fa 01000000 base 2
si tratta del caso 32 + (-64), quindi dobbiamo portare a complemento a 2 64, e hai fatto bene il calcolo cioè : 11000000
Bene facciamo la tradizionale somma come hai fatto tu:
00100000 +
11000000 =
--------
11100000
questo è il risultato di 32 + (-64) = -32
infatti se prendi 32 e lo porti a complemento a 2, cioè 00100000 -> 11011111 + 1 diventa appunto 11100000
-32 + 7 è banale, 7 in binario fa 00000111 quindi:
00000111
11100000 =
--------
11100111 cioè -25, infatti è già convertito in complemento a 2
per verificare se è vero che è 25, controlliamo: 25 in binario fa 00011001 -> 11100110 + 1 = 11100111 Quindi è corretto :D

Forse ti sarai confuso, le due rappresentazioni sia complemento a 2 e sia modulo e segno vanno distinte, ad eccezione il complemento a 2 che fa dell'uso del complemento a 1.

edit: forse mi sono dilungato troppo 8-|, in ogni caso spero di averti chiarito.. se hai domande chiedi pure ;) Good night! ^^
Ultima modifica effettuata da Lawliet 23/01/10 0:09
aaa
23/01/10 0:55
dengel
grazie , spiegazione esaustiva :)
aaa
23/01/10 9:16
nessuno
E

-2^8= -128

non -127
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
23/01/10 12:20
dengel
si si scusa ho scritto due volte 127... :)
aaa
23/01/10 15:51
Lawliet
Postato originariamente da nessuno:
E
-2^8= -128
non -127


cavoli, non ci avevo fatto proprio caso :rofl:
aaa
28/01/10 11:20
dengel
Nel caso in cui si genera overflow , come faccio a sapere se è giusto il mio calcolo??
(8 bit)

(- 120 - 30 ) + 10
120 è 0 1 1 1 1 0 0 0 compl a 2: 1 0 0 0 1 0 0 0
30 è 0 0 0 1 1 1 1 0 compl a 2: 1 1 1 0 0 0 1 0


1 0 0 0 1 0 0 0 (-120) +
1 1 1 0 0 0 1 0 (-30) =
1 0 1 1 0 1 0 1 0

il primo 1 indica l' overflow..qual'è il senso di sommare 10 a un numero che nn è il risultato della somma?

cmq continuo
1 1
0 1 1 0 1 0 1 0 (??) +
0 0 0 0 1 0 1 0 (+10) =
0 1 1 1 0 1 0 0

Ora cosa dovrei concludere?? please help
aaa
28/01/10 12:59
dengel
niente tutto ok , bastava convertire i risultati in complemento a 2 ...
aaa