Памятка к зимней семестровой работе 2012 по информатике
Кодирование числовой информации
1. Целые числа со знаком хранятся в дополнительных кодах!
Это значит, что в 1-й задаче семестровой ответ нужно писать в дополнительном коде.
Для положительного числа дополнительный код равен прямому.
Для отрицательного числа его надо считать. Самый простой способ это сделать – вычесть из 1000016 прямой код числа (без знака!)
Пример:
А=384 => переводим в 16 с/с А=18016 => Ответ: 0180
В=-500 => переводим в 16 с/с В=-1F4. Вычитаем из 10000 1F4 => F416=FE0C. Ответ: FE0C
2. Сложение целых чисел со знаком.
Даны дополнительные коды чисел. Надо их просто сложить. Если при сложении получилось переполнение – отбрасываем старший разряд (например: FFF4+FFF4=1FFE8 => FFE8). Получившийся результат и есть искомый код суммы. Теперь надо найти число, соответствующее тому коду. Если первый знак кода больше или равен 8, то число отрицательное и это его дополнительный код. Нужно найти его прямой код: [Доп. код]. Получаем число в 16 с/с. Дописываем его знак (минус) и это есть наш ответ.
3. Машинный код чисел с плавающей точкой в 32 разрядной сетке
Такие числа хранятся в компьютере в прямом коде! Дополнительные коды используются только при расчетах.
Помним, что:
1. Первый бит кода отвечает за знак числа
2. Следующие 7 бит это приведенный порядок (Порядок+4016)
3. Остальные 24 бита отводятся на нормализованную мантиссу
Пример:
А=15,75
Переводим в 16с/с => А=F,С16
Откуда: мантиссаА=0,FC Приведенный порядок 116+4016=4116
Знак у числа «+», значит первый бит будет равен 0.
Теперь у нас есть все части, из которых можно собрать код числа:
41FC0000 – это и есть код числа 15,75
Еще пример:
B=-265,25
Переводим в 16с/с => -109,416 => -0,1094*10316
МантиссаВ=0,1094
Порядок 316+4016=4316
Знак «минус» означает, что первый бит равен 1
Собираем код (добавляем знак к порядку): 4316=0=> 1=> C316
Итого: C3109400
4. Операция сложения вещественных чисел.
Даны коды вещественных чисел.
В этой задаче важно не забыть привести порядки двух чисел к общему-старшему.
Если знаки чисел одинаковы, то просто приводим порядки к общему и складываем мантиссы.
Если разные, то для кода мантиссы отрицательного числа считаем дополнительный код и складываем его с прямым кодом положительного числа (только мантиссы!). Если результат получился отрицательный (на первом месте >=8), то находим прямой код так же вычитанием.
Пример 1:
Кс=C3109C00, Kd=41A70000.
Видим, что С отрицательное. Значит, для него надо будет считать дополнительный код.
Выпишем из кодов сами числа:
С = -.109С*103
D = .A7*101
Приводим к общему большему порядку (3):
С = -.109С*103 => 00.109C00
D = .00A7*103 => 00.00A700
Для отрицательного числа считаем дополнительный код мантиссы:
100.0000-00.109С00 = FF.EF6400
Складываем коды мантисс:
00.00A700 + FF.EF6400 = FF.F00B00 -FF. говорят о том, что результат отрицательный. Значит, нам нужно найти прямой код.
Находим прямой код суммы:
100.0000 – FF.F00B = 00.0FF5
Помним, что этой мантиссе соответствует порядок 3. Надо нормализовать мантиссу (0.1<=m< 1) т. е. 0.FF5. следовательно, изменится порядок с 3 до 2.
Итого имеем:
Мантисса суммы: 0.FF5
Порядок суммы: 2
Знак суммы: минус
Собираем из этого код суммы:
С2FF5000
Десятичное число соответствующее коду суммы:
0,FF5*102 = FF,516 = 15*16+15+5/16 = 255,3125
Вспоминаем, что число у нас отрицательное! Итоговый ответ: -255,3125
Примеры для самоподготовки:
Кс=С3109400 Кd=41F80000. Ответ: C2F9C,75
Кс=41FE0000 Кd=42F53000. Ответ: 43105,0625
Кс=42B34000 Кd=C2F10000. Ответ: C23DC,75
Кс=C2F38000 Кd=C1D80000. Ответ: C3101


