Правило № 7. Обратное преобразование числа из дополнительного кода
Методические указания по выполнению
Расчетно-графической работы по дисциплине
Информатика».
Кодирование информации
Казань 2009
Целью выполнения расчетно-графической работы является привитие студентам практических навыков использовать различные позиционные системы счисления, применяемые в вычислительных системах, выполнять переводы чисел между системами счисления, арифметические операции; осуществлять кодирование и машинное представление числовой информации.
Методические указания включают теоретический материал, задания для выполнения расчетно-графической работы, примеры выполнения заданий и оформления отчета.
Теоретический материал
Рассмотрим правила перевода чисел из одной системы счисления в другую систему счисления.
Правило 1. Перевод чисел из системы счисления с основанием q в десятичную систему счисления.
Чтобы перевести число anan-1…a1a0.a-1…a-m(q) из системы счисления с основанием q в десятичную систему счисления необходимо число представить в форме многочлена.. Многочлен представляет собой сумму n + 1 + m слагаемых, где n +1 – количество разрядов в целой части исходного числа, а m - количество разрядов в дробной части исходного числа. Каждое слагаемое многочлена соответствует разряду исходного числа. Слагаемое многочлена представляет собой произведение двух сомножителей. Первый сомножитель - десятичное число равное весу цифры соответствующего разряда исходного числа. Второй сомножитель - это степень, основанием которого является основание системы счисления, а показателем степени - номер разряда:
,
где N(10) - значение десятичного числа;
a*n, a*n-1, …, a*1, a*0, a*-1, … a*-m - десятичные числа равные весам цифр an, an-1, …, a1, a0, a-1, … a-m(q) соответствующих разрядов c номерами n, n-1, …, 1, 0, -1,…,-m исходного числа;
Правило 2. Перевод целых чисел из десятичной системы счисления в систему счисления с основанием q.
Для этого исходное число необходимо разделить на основание системы счисления q. В результате деления будет получено частное (целое число) и остаток от деления (целое число). На следующем шаге алгоритма необходимо полученное частное также разделить на основание системы счисления. Будет получено также частное и остаток. Деление очередного частного производится до тех пор, пока очередное частное не окажется строго меньше основания системы счисления q. Цифре старшего разряда будет соответствовать частное последнего деления. Цифре следующего разряда - остаток последнего деления. Цифре следующего разряда - остаток предпоследнего деления и т. д., цифре младшего разряда будет соответствовать остаток первого деления.
Правило 3. Перевод чисел из двоичной системы счисления в восьмеричную и шестнадцатеричную системы счисления.
Для этого необходимо разбить исходное число на триады (тетрады для шестнадцатеричной системы счисления). Триада (тетрада) представляет собой последовательность трех (четырех) соседних двоичных цифр, взятых из записи исходного числа.
Разбиение исходного числа производится от разделительной точки. Целая часть числа разбивается при движении от разделительной точки влево. Дробная часть числа разбивается при движении от разделительной точки вправо. Крайняя левая группа, если она не укомплектована двоичными цифрами, дополняется нулями: слева. Крайняя правая группа, если она не укомплектована двоичными цифрами, дополняется нулями: справа. Далее необходимо каждой триаде (тетраде) поставить в соответствие цифру восьмеричной (шестнадцатеричной) системы счисления. Запишем число. Порядок цифр восьмеричных (шестнадцатеричных) цифр в записи искомого числа такой же, что и порядок соответствующих триад (тетрад) в записи исходного числа.
Правило 4. Перевод из восьмеричной, шестнадцатеричной систем счисления в двоичную систему счисления.
Для этого необходимо каждой цифре исходного числа поставить в соответствие триаду (тетраду) двоичных цифр. Запишем искомое число. Искомое число будет состоять из последовательности триад (тетрад). Порядок триад (тетрад) такой же, как и порядок соответствующих цифр в записи исходного числа.
Правило 5. Перевод правильной десятичной дроби из десятичной системы счисления в систему счисления с основанием q.
Для этого правильную десятичную дробь необходимо умножить на основание системы счисления q. При этом будет получена целая и дробная часть произведения. На следующем шаге алгоритма необходимо дробную часть произведения умножить на основание системы счисления q. При этом будет получена также целая и дробная часть произведения. Дробные части произведений далее умножаются на основание системы счисления q.
Процесс завершается в трёх случаях:
1. Дробная часть произведения оказывается равной нулю. В этом случае перевод исходного десятичного числа в систему счисления с основанием q точный.
2. Дробная часть произведения оказывается равной одной из дробных частей произведений, найденных ранее. В этом случае искомое число представляет собой периодическую дробь.
3. Задана точность перевода, определяемая количеством разрядов в дробной части числа. В этом случае считается, что все разряды дробной части искомого числа определены, когда количество найденных произведений равно точности перевода.
Запишем исходное число. Записывается ноль целых и ставится разделительная точка. Затем следуют цифры дробных разрядов. Цифре разряда с номером -1 соответствует целая часть первого произведения. Цифре разряда с номером -2 соответствует целая часть второго произведения, и т. д.
При вводе дробных десятичных чисел в ЭВМ перевод в двоичную систему счисления может быть произведен приближенно (случай 2 и 3). В этом случае при выводе числа производится обратный перевод из двоичной системы счисления в десятичную систему счисления. Результат перевода будет меньше исходного числа.
Правило № 6. Преобразование отрицательного десятичного числа в дополнительный код.
Для получения дополнительного кода отрицательного десятичного числа необходимо выполнить следующие действия:
1. Найти абсолютную величину исходного числа.
2. Перевести значение абсолютной величины числа в двоичную систему счисления.
3. Дополнить слева полученное число незначащими нулями до необходимой разрядности. При этом обязательно должен быть добавлен хотя бы один разряд для хранения знака числа.
4. Найти обратный код полученного числа. При этом двоичные нули исходного числа заменяются двоичными единицами, а двоичные единицы - двоичными нулями.
5. К полученному обратному коду прибавляется единица.
Правило № 7. Обратное преобразование числа из дополнительного кода
Для восстановления изображения числа в десятичной системе счисления, представленного в дополнительном коде необходимо выполнить следующие действия:
1. Найти обратный код дополнительного кода числа путем замены двоичных нулей на двоичные единицы, а двоичных единиц на двоичные нули.
2. К полученному двоичному числу необходимо прибавить единицу.
3. Перевести полученное число в десятичную систему счисления
4. Слева к числу приписать знак минус.
Правило № 8 Преобразование десятичного числа в короткий формат.
1. Перевод десятичного числа в двоичную систему счисления.. Перевод осуществляться в соответствии с правилом 2. При этом искомое двоичное число должно содержать 25 значащих разрядов.
Рассмотрим два случая.
1. Если исходное число по абсолютной величине не меньше единице, то количество дробных разрядов (точность перевода) числа можно определить следующим образом:
n + 1 + m = 25;
m = 24 – n,
где n +1 - количество разрядов в целой части числа искомого двоичного числа (n - номер старшего разряда искомого двоичного числа);
m - количество разрядов дробной части искомого двоичного числа.
Искомое двоичное число будем содержать 25 значащих разрядов.
2. Если исходное число по абсолютной величине меньше единицы, то при переводе правильной десятичной дроби необходимо определить номер первого разряда дробной части искомого двоичного числа, в котором будет располагаться двоичная единица. Пусть номер найденного разряда -j. Обозначим через s количество разрядов с двоичными нулями, расположенными между разделительной точкой и разрядом с номером –j, s = j -1. Тогда точность перевода должна быть равна: m = s + 25. Разряды с номерами небольшими, чем –j назовем значащими разрядами числа. Их количество равно 25.
2. Округление числа. Для округления к полученному на первом шаге двоичному числу прибавляется единица, по весу равная единице младшего разряда. Затем младший разряд полученной суммы отбрасывается. В результате будет полученное число, содержащее 24 значащих разрядов.
3. Нормализация числа. Для нормализации числа необходимо перемещать разделит. точку таким образом, чтобы искомое число, полученное в результате перемещения точки, располагалось на полусегменте [1, 2} (x-искомое число, 1 x<2).
Первоначально порядок числа принимается равный нулю. Если число оказывается больше или равно двух, то разделительная точка перемещается вправо. При этом значение порядка увеличивается на величину равную количеству разрядов, на которые переместилась точка. Если исходное число меньше 1, то разделительная точка перемещается вправо. При этом значение порядка уменьшается на величину, равную количеству разрядов, на которое переместилась разделительная точка. Полученный порядок числа называется абсолютным порядком числа.
Число, расположенное на полусегменте [1, 2), имеет целую часть равную 1. Поэтому при хранении числа в памяти ЭВМ нет необходимости в хранении целой части числа. Целая часть отбрасывается. В этом случае остается мантисса (дробная часть числа), содержащая 23 значащих разрядов.
4. Определение смещенного порядка числа. Для определения смещенного порядка необходимо к абсолютному порядку, полученному на шаге 3 прибавить 127 (сместить порядок на 127). В результате получим смещенный порядок числа. Полученное десятичное число необходимо перевести в двоичную систему счисления и представить в форме 8-рязрядного двоичного числа без знака. Смещенный порядок - всегда неотрицательное число. Минимальное значение абсолютного порядка равно -127, а максимальное значение равно +128.
5 Запись числа в память. Дробное число в коротком формате представляется в памяти в форме нормализованного числа, занимающего 4 байта. Старший бит нулевого байта (бит с номером 7) является знаковым битом. Если число неотрицательное, то знак числа равен нулю. Если число отрицательное, то знак числа равен единице. Смещенный порядок числа занимает 8 бит (1 байт) и расположен с нулевого по 6-ой бит нулевого байта и в 7-ом бите первого байта. Мантисса числа занимает 23 бита и располагается во первом байте с нулевого по 6-ой бит и полностью занимает второй и третий байты числа.
Правило № 9. Сложение чисел.
При сложении двух чисел в системе счисления с основанием q необходимо записать их столбиком одно над другим так, чтобы соответствующие разряды одного слагаемого располагался под соответствующими разрядами другого слагаемого. Сложение производится поразрядно справа налево, начиная с младших разрядов слагаемых. Рассмотрим сложение в разряде с номером i. Введем обозначения:
- а , b -цифры соответственно первого и второго слагаемых i-го разряда,
-p -признак переноса из смежного младшего разряда. Признак переноса p равен 1, если в i-1 разряде сформирована единица переноса и p равен 0 в противном случае.
Найдем сумму: S =a +b +p ; a и b - десятичные числа, которые соответствуют по весу цифрам а , и b системы счисления с основанием q.
Сложение производиться в десятичной системе счисления. Возможны два случая:
1. S q. Из S вычтем основание системы счисления q, сформируем признак переноса в следующий i+1 разряд, равный 1. Разности, полученной в результате вычитания, поставим в соответствии цифру S системы счисления с основанием q.
2. S < q.. Сформируем признак переноса p в следующий i+1 разряд, равный 0. Поставим в соответствии десятичному числу S цифру S системы счисления с основанием q.
Полученная цифра S является цифрой i-го разряда суммы. Аналогично производится сложение в каждом разряде.