Это ошибка в моей компьютерной архитектурной книге?
-
19-09-2019 - |
Вопрос
Я работаю над своим HW для компьютерной архитектуры и наткнулся на следующую проблему:
A = 247
B = 2371) Предположим, что A и B подписаны 8-битные целые числа, хранящиеся в формате комплемента Two. Рассчитайте A + B с использованием насыщающей арифметики. Результат должен быть написан в десятичном масштабе. Показать свою работу.
2) Предположим, что A и B подписаны 8 -битные целые числа, хранящиеся в формате Compelemnt. Рассчитайте A - B, используя насыщающую арифметику.
Теперь, как это даже действительные вопросы? Я знаю, что такое насыщающая арифметика, но как действительно сказать, что A равно 247, а B-237, когда они не могут быть представлены 8-битным номером дополнения?
Я понимаю, что смысл насыщенной арифметики находится в случае переполнения/нижнего потока, чтобы установить все биты на крайнюю ценность, но для меня не имеет смысла задать ряд вопросов (есть еще 3 с этой же проблемой) включает арифметику чисел, которые не могут быть представлены в формате, который они указали.
Я здесь ошибаюсь?
Решение
Единственная интерпретация, которая имеет смысл, заключается в том, что данные значения - это без знака интерпретация рассматриваемого числа; Значения, превышающие 127, очевидно, находятся вне диапазона для 8-битного значения двойного комплекса. Я согласен, что вопрос плохо указан.
Другие советы
Я не знаю, но это мощь Будьте спросить: «Преобразовать десятичное число 237 в 8-битное целое число. Теперь интерпретируйте эти биты как 8-битное целое число комплемента и добавить их».
Вроде как сказать: в c:
char a = 237;
printf("%x %d\n",a, a);
Который компилизируется и дает вам ценности, которые вы ожидаете, на основе интерпретации комплемента 8-битного значения "237"
Для меня выглядит неправильно. 8-битные подписанные два целых числа комплемента могут быть между -128 и 127. Любая попытка назначить постоянную 237 или 247 8-битной переменной комплемента должна привести к ошибке, в зависимости от вашего языка.
Если бы проблема заключалась в том, что «предположим, что A и B хранятся в 8 -битном подписанном целом», то это имело бы смысл. Хранение a = 247 в 8 -битном целое число дает значение -9, хранение B = 237 дает значение -19. В противном случае это не имеет смысла. 8 -битное целое число не может иметь значение 247 или 237.