Pregunta

Estoy trabajando en mi HW para la arquitectura de ordenador y me encontré con el siguiente problema:

  

A = 247
  B = 237

     

1) Supongamos que A y B son enteros con signo de 8 bits almacenados en formato de complemento a dos. Calcular A + B aritmética usando saturar. El resultado debe ser escrito en decimal. Muestra tu trabajo.
  2) Supongamos que A y B son firmados 8 bits enteros almacenados en formato compelemnt de dos. Calcular A -. B usando aritmética de saturación

Ahora, ¿cómo son estos incluso unas preguntas válidas? Yo sé lo que es saturar la aritmética, pero ¿cómo es válido decir que A es 247 y B es 237 cuando no pueden ser representados por un número complementario de 8 bits de dos?

Me di cuenta el punto de la aritmética saturada es en el caso de un desbordamiento / subdesbordamiento para establecer todos los bits al valor extremo, pero no tiene sentido para mí para pedir una serie de preguntas (hay 3 más con este mismo problema) que implica la aritmética de números que no pueden representarse en el formato que se especifica.

¿Me equivoco aquí?

¿Fue útil?

Solución

La única interpretación que tiene sentido es que los valores dados son los sin signo interpretación del número en cuestión; valores superiores a 127 son obviamente fuera del alcance de un valor de complemento a dos con signo de 8 bits. Estoy de acuerdo en que la cuestión se dice mal, sin embargo.

Otros consejos

No sé, pero podría esté preguntando: ". Convertir el número decimal 237 en un entero de 8 bits Ahora interpretar esos bits como un entero de 8 bits complemento a 2 y añadirlos ".

Un poco como diciendo, en C:

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

que recopila y le da los valores que se puede esperar en base a la interpretación del complemento a 2 de la valor de 8 bits "237"

Se ve mal a mí. 8 bits con signo de dos números enteros del complemento pueden estar entre -128 y 127. Cualquier intento de asignar una constante de 237 o 247 a un niño de 8 bits con signo complemento de dos variables debe resultar en un error, dependiendo de su idioma.

Si el problema se "asume que A y B se almacena en un entero de 8 bits", entonces tendría sentido. Almacenamiento de A = 247 en un entero de 8 bits se obtiene un valor de -9, el almacenamiento de B = 237 produce un valor de -19. De lo contrario, no tiene sentido. Un poco entero de 8 no puede tener un valor de 247 o 237.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top