Алгоритмические операции в двоичном коде: 12+66; 8* 2

0 голосов
59 просмотров

Алгоритмические операции в двоичном коде: 12+66;
8* 2


Информатика (16 баллов) | 59 просмотров
0

Не могли бы вы объяснить ещё раз и по доходчивей, для человека который в этом не чего не понимает, а ещё лучше решение если не затруднит)

Дан 1 ответ
0 голосов

Сначала числа преобразуются в двоичный код.
А=-5(10)=-101(2)
В=-8,25(10)=-1000,01(2)
Числа в формате с фиксированной запятой в памяти хранятся таким образом, что позиция запятой известна и неизменна для всех чисел (отсюда и название с фиксированной точкой) .
Для этого число А должно быть представлено в виде -101,00(2)
Пусть для хранения используется 8 разрядов. Тогда числа в прямом коде будут представлены в виде
А: 1.00101,00
В: 1.01000,01 - здесь отделённый точкой старший разряд знаковый, 1 - означает минус.
Обратный код получается инверсией всех разрядов, кроме знаковых.
А: 1.11010,11
В: 1.10111,10
Теперь нужно получить дополнительный код. Но перед этим нужно иметь в виду, что ни запятые, ни точки в памяти не хранятся, но всегда известно, где знаковый разряд и сколько разрядов в дробной части. Поэтому
А: 11101011 + 1 = 11101100
В: 11011110 + 1 = 11011111
Это и есть внутреннее представление заданных чисел в дополнительном коде.
Сложение и вычитание чисел с фиксированной точкой производится так же, как и для целых чисел.
11101100
+
11011111
---------------
111001011 - старший разряд (№8) будет выдавлен из разрядной сетки и в данном случае просто отброшен. Результат операции сложения 11001011.
Теперь можно преобразовать получившееся число в привычный десятичный вид и проверить результат.
1.1001011
1.0110100 - обратный код
1.0110100 + 1 = 1.0110101 - прямой код.
Возвращаем запятую на место
1.01101,01 -> -(8+4+1+1/4)
В десятичном виде это число -13,25
Сложение было выполнено правильно.

(34 баллов)