Выполнить операции над машинными кодами двух вещественных чисел на 32-разрядной сетке (С1= A+B, C2=A-B, C3=-A-B, C4=B-A). Коды чисел заданы в шестнадцатеричной системе счисления.
A = EFF40400, B = ECD00000
Ответ
С1 = EFF7440016, С2 = EFF0C40016, С3 = 6FF7440016, С4 = 6FF0C40016.
Решение
1. Представим числа в двоичном виде:
A = EFF4040016 = 111011111111010000000100000000002
B = ECD0000016 = 111011001101000000000000000000002
2. Выделим знак, экспоненту и мантиссу (для удобства):
A = 1 11011111 111010000000100000000002
Знак: -
Экспонента: 110111112 = 28 – 1 – 25 = 255 – 32 = 223
Найдем реальный порядок (вычтем 127): 223 – 127 = 96
Мантисса: 1,111010000000100000000002
-A = 0 11011111 111010000000100000000002
Знак: +
Экспонента: 110111112 = 28 – 1 – 25 = 255 – 32 = 223
Найдем реальный порядок (вычтем 127): 223 – 127 = 96
Мантисса: 1,111010000000100000000002
B = 1 11011001 101000000000000000000002
Знак: -
Экспонента: 110110012 = 28 – 1 – 25 – 22 – 21 = 255 – 38 = 217
Найдем реальный порядок (вычтем 127): 217 – 127 = 90
Мантисса: 1,101000000000000000000002
3
. Произведём арифметические операции:
С1 = A + B
Приведём к одному порядку мантиссы и сложим их:
Am = 1,111010000000100000000002 * 296
Bm = 1,101000000000000000000002 * 290
Am = 1111010,000000100000000002 * 290
Bm = 1,101000000000000002 * 290
Cm = 1111011,101000100000000002 * 290 = 1,111011101000100000000002 * 296
Собираем число С1: знак «-», экспонента = экспоненте A, мантисса = Cm
C1 = 1 11011111 111011101000100000000002
C1 = 1110 1111 1111 0111 0100 0100 0000 00002 = EFF7440016
C2 = A - B
Приведём к одному порядку мантиссы и вычтем их:
Am = 1,111010000000100000000002 * 296
Bm = 1,101000000000000000000002 * 290
Am = 1111010,000000100000000002 * 290
Bm = 1,101000000000000002 * 290
Cm = 1111000,011000100000000002 * 290 = 1,111000011000100000000002 * 296
Собираем число С2: знак «-», экспонента = экспоненте A, мантисса = Cm
C2 = 1 11011111 111000011000100000000002
C2 = 1110 1111 1111 0000 1100 0100 0000 00002 = EFF0C40016
С3 = -A - B
Приведём к одному порядку мантиссы и сложим их:
Am = 1,111010000000100000000002 * 296
Bm = 1,101000000000000000000002 * 290
Am = 1111010,000000100000000002 * 290
Bm = 1,101000000000000002 * 290
Cm = 1111011,101000100000000002 * 290 = 1,111011101000100000000002 * 296
Собираем число С3: знак «+», экспонента = экспоненте A, мантисса = Cm
C3 = 0 11011111 111011101000100000000002
C3 = 0110 1111 1111 0111 0100 0100 0000 00002 = 6FF7440016
C4 = B - A
Приведём к одному порядку мантиссы и вычтем их:
Am = 1,111010000000100000000002 * 296
Bm = 1,101000000000000000000002 * 290
Am = 1111010,000000100000000002 * 290
Bm = 1,101000000000000002 * 290
Cm = 1111000,011000100000000002 * 290 = 1,111000011000100000000002 * 296
Собираем число С4: знак «+», экспонента = экспоненте A, мантисса = Cm
C4 = 0 11011111 111000011000100000000002
C4 = 0110 1111 1111 0000 1100 0100 0000 00002 = 6FF0C40016
Ответ: С1 = EFF7440016, С2 = EFF0C40016, С3 = 6FF7440016, С4 = 6FF0C40016.