Памятка к зимней семестровой работе 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