Domanda

sto lavorando sul mio HW per l'architettura del computer e mi sono imbattuto nel seguente problema:

  

A = 247
  B = 237

     

1) Supponiamo A e B sono firmati interi a 8 bit memorizzati in formato complemento a due. Calcola A + B usando saturando l'aritmetica. Il risultato dovrebbe essere scritto in decimali. Mostra il tuo lavoro.
  2) Si supponga A e B sono firmati 8 bit interi memorizzati in formato compelemnt due. Calcola A -. B usando aritmetica saturando

Ora, come sono questi, anche una serie di domande valide? So cosa saturando l'aritmetica è, ma come è valida per dire che A è 247 e B è 237 quando non possono essere rappresentati da un numero di complemento a 8 bit a due?

Mi rendo conto che il punto di aritmetica saturi è nel caso di un overflow / underflow per impostare tutti i bit al valore estremo, ma non ha senso per me a chiedere una serie di domande (ci sono più 3 con questo stesso problema) che coinvolge aritmetica dei numeri che non possono essere rappresentati nel formato essi specificato.

Mi sbaglio qui?

È stato utile?

Soluzione

L'unica interpretazione che ha senso è che i valori riportati sono il senza segno interpretazione del numero in questione; valori superiori a 127 sono ovviamente fuori portata per un valore di complemento a due con segno a 8 bit. Sono d'accordo che la questione è mal detto, però.

Altri suggerimenti

Non lo so, ma potrebbe chiederanno:. "Convertire il numero decimale 237 in un intero a 8 bit Ora interpretare tali bit come un intero complemento a 2 a 8 bit e aggiungerli ".

Un po 'come dire, in C:

char a = 237;
printf("%x %d\n",a, a);

che riunisce e ti dà i valori che ci si aspetterebbe in base all'interpretazione gli effettivi della 2 del valore a 8 bit "237"

appare sbagliato per me. 8-bit ha firmato due di interi complemento può essere compreso tra -128 e 127. Ogni tentativo di assegnare un costante 237 o 247 per un 8-bit con segno variabile a complemento di due dovrebbe tradursi in un errore, a seconda della lingua.

Se il problema è stato "assumere che A e B vengono memorizzati in un numero intero con segno a 8 bit", allora avrebbe senso. Memorizzazione A = 247 in un firmata bit integer 8 fornisce un valore di -9, memorizzare B = 237 produce un valore di -19. In caso contrario, non ha senso. Un firmata bit integer 8 non può avere un valore di 247 o 237.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top