La differenza tra (- (a * b)) e ((-a) * b)

1

Uno dei nostri insegnanti ha detto che c'è un solo esempio che c'è una differenza tra (-(a*b)) e ((-a)*b) . Ha detto che usando il complemento a due è possibile trovarne uno.

Sto cercando di trovare questo esempio. Qualcuno può aiutarmi?

Grazie in anticipo

    
posta TTS 15.02.2015 - 02:48
fonte

1 risposta

7

Il complemento a due rappresenta i numeri nell'intervallo - (2 ** (N-1)) .. (2 ** (N-1)) - 1, dove N è il numero di bit.

Ad esempio, il complemento a 16 bit 2 rappresenta -32768 .. 32767.

Se il prodotto di A e B è 32768, la prima espressione si sovrapporrà, perché 32768 non può essere rappresentato prima di essere negato, mentre la seconda espressione andrà bene perché genera direttamente il numero massimo negativo.

Il complemento a due ha lo svantaggio in certi calcoli che tronca verso l'infinito negativo. Il complemento di uno tronca verso zero (o zero negativo). Questo è importante in alcune applicazioni (i dettagli sono molto dell'azienda-proprietario di un precedente datore di lavoro) e credo che questo sia almeno in parte il motivo per cui Seymour Cray ha usato il proprio complemento su il CDC 6600 e i suoi follow-on.

    
risposta data 15.02.2015 - 03:38
fonte

Leggi altre domande sui tag