| 26.12.2018, 15:54 | ||||||||||||||||||||||||||||||||||||||||
ПЕРЕВОД ЧИСЕЛ ИЗ ОДНОЙ СИСТЕМЫ СЧИСЛЕНИЯ В ДРУГУЮ Основания восьмеричной и шестнадцатеричной систем счисления выражаются степенью цифры два (8 = 23; 16 = 24). Этим объясняется простота преобразования чисел между этими системами и двоичной системой счисления. Для перевода чисел из восьмеричной системы счисления в двоичную достаточно каждую цифру восьмеричного числа заменить соответствующим 3-разрядным двоичным числом. Например: 156,7678= 0 0 1 1 0 1 1 1 0 , 1 1 1 0 1 1 1 1 1 2 1 5 6 , 7 6 7 Перевод в двоичную систему счисления шестнадцатеричных чисел достигается заменой цифр шестнадцатеричного представления 4-разрядными двоичными числами. Например: 89A,BCD16 = 1 0 0 0 1 0 0 1 1 0 1 0 , 1 0 1 1 1 1 0 0 1 1 0 1 8 9 A , B C D При обратном переводе чисел из двоичной системы в восьмеричную или шестнадцатеричную систему счисления необходимо разряды двоичного числа, отсчитывая их от запятой влево и вправо, разбить на группы по три разряда (в случае перевода в восьмеричную систему) или на группы по четыре разряда (в случае перевода в шестнадцатеричную систему счисления). Неполные крайние группы дополняются до полных нулями. Затем каждая двоичная группа представляется цифрой той системы счисления, в которую переводится число. Например, вот как будет выглядеть одно и то же двоичное число в этих с.с.: 0 1 1 0 1 1 1 0 1 , 1 0 1 1 0 0 0 1 2 = 665,5428 0 1 1 0 1 1 1 0 1 , 1 0 1 1 0 0 0 1 2 = DD,B116 У студентов вызывает сложность перевод чисел между десятичной и двоичной с.с. Метод, используемый для такого перевода, зависит от того, в какой с.с. представлены числа, над которыми проводятся необходимые для перевода чисел арифметические операции. Если перевод производится человеком, то, очевидно, операции будут выполняться над числами в десятичной с.с.; если же перевод осуществляется цифровым устройством, арифметические операции удобнее выполнять над числами в двоичной системе счисления. Рассмотрим эти два случая. Перевод чисел с выполнением операций над десятичными числами. Так как преобразование чисел между двоичной и шестнадцатеричной системами счисления не представляет труда, то для простоты выкладок будем в дальнейшем рассматривать перевод чисел между шестнадцатеричной и десятичной системами счисления[2]. Пусть требуется перевести число из шестнадцатеричной а десятичную систему счисления. В качестве примера выберем число 5F, С816. Учитывая веса разрядов шестнадцатеричной системы счисления, запишем значение этого числа в десятичной системе счисления: 15F,C8 = 1 · 162 + 5 · 161 + 15 · 160 + 12 · 16-1 + 8 · 16-2 = 1 5 F , C 8 = (((1 · 16 + 5) · 16 +15) + 16-1 · (12 + 16-1 · 8)) Здесь путем группировки членов вычисление полиномов представлено в форме так называемой схемы Горнера, удобной для программирования и обеспечивающей минимальное число выполняемых операций умножения. Вычисления в приведенном примере дают следующий результат: 15F,C816 = 351,78110 Целая часть числа преобразуется точно, дробная часть - приближенно. В приведенном примере вычисления при нахождении дробной части выполнялись с точностью, определяемой тремя десятичными разрядами. Рассмотрим обратный перевод чисел из десятичной в шестнадцатеричную систему счисления. Воспользуемся приведенным выше примером. Теперь будем считать заданным десятичное число 351, 78110 и будем искать его представление в шестнадцатеричной системе счисления. Рассмотрим преобразование целой части числа. Из равенства 35110 = (1 · 16 +5) · 16 + 15 можно вывести следующее правило получения цифр шестнадцатеричного представления. Деление правой части равенства (т. е. целой части заданного числа) на 16 дает в остатке 15 (т. е. F); деление полученного частного на 16 даст частное 1 и остаток 5. Правило 3. Таким образом, для перевода целой части числа из десятичной системы в другую необходимо это число (десятичное) разделить на основание системы в которую переводится число. Полученное частное вновь делится на основание с.с. до получения в остатках цифр всех разрядов необходимой с.с. Дробная часть числа получается последовательным умножением на основание с.с. , а полученная дробная часть произведения вновь умножается на основание с.с. до необходимой точности вычислений. Покажем эти действия по преобразованию десятичного числа 35110 в шестнадцатеричную систему счисления:
Отсюда 35110 = 15F16. Теперь рассмотрим преобразование дробной части десятичного числа в шестнадцатеричную систему счисления. Из равенства 0,781 = 16-1 · (12 + 16-1 · 8) следует, что для получения цифр разрядов дробной части шестнадцатеричного числа (0,C816) необходимо последовательно умножать на 16 дробную часть исходного десятичного числа и дробные части образующихся произведений. При этом целые части этих произведений являются цифрами шестнадцатеричного представления:
Таким образом, 0,78110 = 0,C7E…16. Здесь опять убеждаемся, что дробные числа преобразуются неточно, т.е. вычисления можно продолжить или ограничить необходимой точностью вычисления, как в этом примере - тремя знаками.
ФОРМЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ (ДАННЫХ) В ПОЗИЦИОННЫХ СИСТЕМАХ СЧИСЛЕНИЯВ цифровых устройствах используются две формы представления чисел: с фиксированной и плавающей точками. Числа с фиксированной точкой. В ячейке для хранения числа с фиксированной точкой один разряд используется в качестве знакового, в нем записывается в закодированной форме знак числа: 0 - в случае положительного, 1 - в случае отрицательного числа. Остальные разряды служат для хранения абсолютного значения числа. Точка, отделяющая целую часть числа от ее дробной части, занимает фиксированное положение: часто перед старшим разрядом либо после младшего разряда. В первом случае для всех представляемых в этой форме чисел абсолютное значение меньше единицы. Например, число «- 0,1011012» следующим образом разместится в элементах запоминающей ячейки (в одном байте):
Свободные младшие разряды заполняются нулями. Так как в этом случае предусматривается хранение лишь дробной части числа, то не только исходные данные, но и результаты всех проведенных над ними операций должны быть числами, абсолютное значение которых меньше единицы. Выполнение этого условия обеспечивается выбором определенных масштабных коэффициентов, на которые умножаются исходные данные задачи. Неправильный выбор коэффициентов может вызвать так называемое переполнение разрядной сетки - возникновение ошибки, если в результате выполнения операций в числе образуется целая часть, для хранения которой в разрядной сетке не предусмотрено места, и она теряется. Необходимость в масштабировании данных составляет один из недостатков представления чисел с фиксированной точкой; другой недостаток этой формы - низкая точность представления чисел, абсолютное значение которых мало (нули в старших разрядах приводят к уменьшению числа разрядов, занимаемых значащей частью числа, и к снижению точности представления числа). Во втором случае, когда точка фиксируется после младшего разряда, числа с фиксированной точкой - целые. Например, число 110112 будет размещено в ячейке памяти в один байт следующим образом:
Свободные старшие разряды заполняются нулями. Числа с плавающей точкой. Форма с плавающей точкой предусматривает представление числа в показательной форме. Например, десятичное число 685,7310 представляется в форме 0,68573 · 103; здесь 0,68573 — мантисса, 10 — основание десятичной системы счисления, 3 - порядок. Двоичное число 0,0001011012 представляется в виде 0,101101 * 10-11; здесь 0,1011012 — мантисса, 102 —основание двоичной системы счисления,—112 — порядок. В ячейке памяти такие числа хранятся в виде двух групп цифр: первая группа, называемая мантиссой, определяет само число, вторая группа, называемая порядком,— место точки в числе. Приведенное выше двоичное число может иметь следующее размещение в элементах запоминающей ячейки:
Соответствующим выбором значения порядка можно добиться, чтобы старший разряд мантиссы не был равен нулю. При этом образуется так называемая нормальная форма.
ВЫПОЛНЕНИЕ ОПЕРАЦИЙ Основной операцией, которая используется в цифровых устройствах при различных вычислениях, является операция алгебраического сложения чисел (сложения, в котором могут участвовать как положительные, так и отрицательные числа). Вычитание легко сводится к сложению путем изменения на обратный знака вычитаемого. Операции умножения и деления также выполняются с помощью операции сложения и некоторых логических действий. Поэтому в цифровых ЭВМ в 70-х, 80-х г.г. прошлого века процессор назывался сумматором, так как все арифметические операции состояли из одной операции сложения двоичных чисел. Для упрощения при записи кода числа знак числа будем представлять полужирными цифрами 0 (для положительных чисел) и 1 (для отрицательных чисел). Положение точки в числе показывать не будем. Сложение положительных двоичных чисел. Выполнение этой операции покажем на примере:
Цифры разрядов суммы N = N1 + N2 формируются последовательно, начиная с младшего разряда. Цифра младшего разряда суммы образуется суммированием цифр младших разрядов слагаемых. При этом кроме цифры разряда суммы формируется цифра переноса в следующий, более старший разряд. Таким образом, в разрядах, начиная со второго, суммируются три цифры: цифры соответствующего разряда слагаемых и перенос, поступающий в данный разряд из предыдущего. Перенос равен 1 во всех случаях, когда результат суммирования цифр в разряде равен или больше р - 2 (р - основание системы счисления). При этом в разряд суммы записывается цифра, на р единиц (т. е. на две единицы) меньшая результата суммирования. Алгебраическое сложение с использованием дополнительного кода. Для пояснения сущности излагаемого ниже метода рассмотрим следующий пример[2]. Пусть требуется сложить два десятичных числа N1 = 0 831 и N2 = 1 376. Так как второе слагаемое - отрицательное число, пользование приемом, излагаемым в школьной программе, потребовало бы последовательности действий с заемами из старших разрядов. Предусматривать в цифровом устройстве дополнительно такую последовательность действий не обязательно. Искомый результат может быть получен и с использованием последовательности действий с передачей переносов в старшие разряды, которая применяется при сложении положительных чисел. Для этого достаточно отрицательное число 1 376 предварительно преобразовать в так называемый дополнительный код следующим образом: во всех разрядах, кроме знакового, запишем дополнение до 9 к цифрам этих разрядов и затем прибавим единицу в младший разряд. Число N2 = 1 376 в дополнительном коде есть N2доп = 1 624. Далее произведем сложение по правилам сложения с передачей переносов в старшие разряды (т. е. так, как складываются положительные числа):
При сложении складываются и двоичные цифры знаковых разрядов с отбрасыванием возникающего из этого разряда переноса. Как видим, получен правильный результат (действительно, 831 – 376 = 455). В двоичной с.с. дополнительный код отрицательного числа формируется по следующему правилу: инвертируются (путем замены 0 на 1 и 1 на 0) цифры всех разрядов, кроме знакового, и в младший разряд прибавляется единица. Например, если N1 = 1 10110, N1 доп = 1 01010. Обратное преобразование из дополнительного кода в прямой код производится по тому же правилу. Такое представление используется для работы с целыми числами в подавляющем большинстве арифметическо - логических устройствах (АЛУ) современных процессоров. Варианты двоичного представления целых чисел наглядно могут быть показаны в виде таблицы: Таблица соответствия прямого и дополнительного кодов
Правило 4. Итак, дополнительный код числа получается изменением во всех разрядах, кроме знакового, записи дополнения до основания этой системы к цифрам этих разрядов и затем прибавлением единицы в младший разряд. Рассмотрим примеры выполнения операции сложения[2]. Пример 1. Пусть N1 = 0 10110, N2 = 1 01101
Перенос, возникающий из знакового разряда, отбрасывается. Пример 2. Изменим на обратный знаки слагаемых (по отношению к предыдущему примеру):
Таким образом, если результат сложения есть отрицательное число, то оно оказывается представленным в дополнительном коде. Геометрическую интерпретацию представления целых чисел со знаком в дополнительном коде можно показать в виде спирали или в виде круговой диаграммы отраженной на числовую ось, где дан лишь один виток этой спирали определенный количеством знакомест - 4 разряда (рис. 1.2):
Рис. 1.2 Представление чисел со знаком в виде спирали отраженной на числовые оси и в виде круговой диаграммы | ||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||||||||||||||||||||||||||||||
| Просмотров: 314 | Загрузок: 0 | | ||||||||||||||||||||||||||||||||||||||||
| Всего комментариев: 0 | |









