Ш. Порядок выполнения работы
Пример 1. Перевести число 13 из десятичной системы счисления в двоичную (получить пять знаков после запятой в двоичном представлении).
Сначала делим тринадцать на два, получаем частное, равное шести, и единицу в остатке; так как частное не равно нулю, делим его на два в соответствии с шагом 2 алгоритма перевода.
Рисунок 5 – Получение двоичной записи числа 13
В результате имеем новое частное, равное трем, и ноль в остатке. Это частное также не равно нулю, поэтому делим его на два, получая частное, равное единице, и два в остатке. Еще раз делим частное (единицу) на два, в этот раз частное равно нулю, а остаток единице. Так как мы получили в результате деления ноль, то переходим к третьему шагу и получаем двоичную запись исходного значения (тринадцать), которая имеет вид 1101.
Пример 2. Перевести число 1000001 в десятичную систему счисления:
Найдем сумму произведений значений битов на их весовые коэффициенты. найденная сумма и будет являться десятичным представлением числа 1000001.
1000001(2) =1×26+0×25+0×24+0×23+0×22+0×21+1×20=64+1=65(10).
Замечание. Если в каком-либо разряде стоит нуль, то соответствующее слагаемое можно опускать.
Пример 3. Сложить числа 00111010 и 00011011.
Решение задачи
+00111010
00011011
мы начинаем со сложения 0 и 1 в последнем столбце, получаем единицу, которую записываем под столбцом. Теперь мы складываем две единицы из следующего столбца, получая 10. Записываем 0 под столбцом, а 1 — над следующим столбцом. На этом этапе процесс решения выглядит следующим образом:
00011011
Складываем 1, 0 и 0, получаем 1 и записываем ее под этим столбцом. Следующие две единицы в сумме дают 10, записываем 0 под столбцом и переносим 1 в следующий столбец. Теперь решение выглядит так:
+00111010
00011011
Три единицы в следующем столбце в сумме дают 11, записываем младшую 1 под столбцом, а другую переносим в следующий столбец. Теперь складываем 1, 1 и 0, получаем 10. Снова записываем 0 под столбцом, а 1 — в следующий столбец.
+00111010
00011011
Складываем 1, 0 и 0 из предпоследнего столбца, получаем 1, записываем ее под столбцом. И, наконец, сумма чисел в последнем столбце равна 0, записываем ее под столбцом. Окончательное решение выглядит так:
+00111010.
Пример 4. Найти десятичный эквивалент чисел, заданных в представлении с плавающей точкой
Предположим, что байт содержит такую последовательность битов: 01101011. Проанализируем эту последовательность, применяя определения, данные выше: знаковый разряд равен 0, порядок — 110 и мантисса — 1011. Для того чтобы расшифровать значение, хранящееся в байте, сначала извлекаем мантиссу и помещаем слева от нее разделительную точку, получая
.1011.
Затем извлекаем порядок (110) и переводим его как 3-битовое представление с избытком в десятичную систему счисления. В нашем случае код порядка является представлением 2. Перемещаем разделительную точку на 2 бита вправо (отрицательный порядок означает, что точку нужно перемещать влево). Следовательно, мы имеем последовательность
10.11,
которая является двоичной записью дроби 23/4. Затем обращаем внимание на то, что знаковый разряд равен 0, следовательно, перед нами неотрицательное число. Делаем вывод, что в байте 01101011 хранится число 23/4.
В качестве еще одного примера рассмотрим байт 10111100. Выписываем мантиссу
.1100
и перемещаем точку на один бит влево, так как порядок (011) является кодом числа — 1. Имеем последовательность
.01100,
которая является кодом 3/8. Знаковый разряд исходной последовательности равен 1, значит, число отрицательное. Делаем вывод, что последовательность 10111100 является кодом - 3/8.
Пример 5. Чтобы записать число в представлении с плавающей запятой, выполняем действия, обратные предыдущим. Например, чтобы записать число 11/8, сначала выражаем его в двоичном представлении и получаем 1.001. Затем переписываем эту последовательность в область мантиссы слева направо, начиная с самой левой единицы в двоичной записи. На этом этапе байт выглядит следующим образом: _ _ _ _ 1 0 0 1
Теперь нужно заполнить поле порядка. Для этого представляем ман-тиссу с разделительной точкой слева и определяем число битов и направление, в котором нужно передвинуть точку, чтобы получить исходную двоичную запись. В нашем примере, чтобы получить 1.011, нужно передвинуть точку в .1001 на один бит вправо. Следовательно, порядок равен 1, поэтому записываем 101 (код 1 в представлении с избытком 4) в поле порядка. Наконец, записываем в позицию знакового разряда 0, потому что дробь неотрицательная. Окончательный байт выглядит так:
01011001.
Наиболее тонким моментом в преобразовании является заполнение поля мантиссы. Правило гласит: выписывать последовательность разрядов двоичной записи слева направо, начиная с самой левой 1 в двоичной записи. В качестве примера рассмотрим процесс записи числа 3/8, двоичное представление которого .011. В этом случае мантиссой будет
_ _ _ _ 1 1 0 0,
а не
_ _ _ _ 0 1 1 0.
Мантисса имеет такой вид, потому что поле мантиссы заполняется, начиная с самой левой единицы, которая появляется в двоичном представлении. Это правило исключает возможность многократной записи одного значения. Оно также означает, что мантисса чисел, не равных нулю, будет всегда начинаться с 1. О таком представлении говорят, что оно нормализованное. Обратите внимание, что представление нуля является особым случаем: его представление с плавающей точкой состоит из одних нулей. Ошибка усечения. Рассмотрим проблему, которая возникает, когда мы пытаемся записать значение 25/8 в представлении с плавающей точкой, используя для него один байт памяти. Сначала записываем 25/8 в двоичном представлении, получаем 10.101. Но, когда мы переписываем его в поле мантиссы, нам не хватает места, и самая правая 1 (которая занимает позицию с весом разряда 1/8) теряется. Если мы на данном этапе будем игнорировать эту проблему и продолжим заполнение поля порядка, то в результате придем к последовательности 01101010, которая является представлением 21/2 вместо 25/8. То, что произошло, называется ошибкой усечения и означает, что часть числа потеряна, потому что поле мантиссы недостаточно велико.
IV.Отчет по работе
Отчет о выполненной работе оформляется индивидуально каждым студентом.
В первой части отчета должны быть приведены название и цель работы.
Вторая часть отчета должна содержать описание решения индивидуального задания.
В заключительной части отчета должны быть приведены выводы, содержащие научный анализ полученных результатов.
V. Контрольные вопросы
1. Чему равен дополнительный код отрицательного числа?
2. С какой целью отрицательные числа записываются в виде дополнительного кода?
3. На что опирается способ представления чисел с плавающей запятой?