в которой основание s и все коэффициенты εi выражены в новой h-системе, и выполнить в h-системе все необходимые для вычисления этой суммы действия.
Пример 1. Перевести в десятичную систему шестнадцатеричное число у = (2Е5,А)16 . Для этого представляют у в виде:
Пример 2. Перевести в десятичную систему двоичное число z = (11011,101)2 :
Рассмотрим теперь перевод числа из s-системы в h-систему посредством арифметических операций исходной s-системы. В этом случае правила для перевода целых чисел и дробей различны.
Перевод целых чисел
Пусть целое число у, представленное в s-системе, требуется перевести в h-систему. Искомая запись числа у в h-системе имеет вид:
Разделив у на h, получим:
Отсюда
где у1 есть частное от деления числа у на основание системы h, а младшая цифра искомого представления числа у в h-системе есть остаток от этого деления.
Если теперь разделить у1 на h, то получим:
В силу
остаток от второго деления есть цифра σ2 следующего разряда в представлении числа у в h-системе и т.д. Таким образом, получаем правило: для перевода целого числа из s-системы счисления в h-систему нужно последовательно делить это число и получаемые частные на Основание h новой системы, представленное в старой s-системе, до тех пор, пока частное не станет меньше h. Старшей цифрой в записи числа в h-системе служит последнее частное, а следующие за ней цифры дают остатки, выписываемые s последовательности, обратной их получению.
Перевод дробных чисел
Перевод в h-систему правильной дроби z представленной в системе счисления с основанием s, означает запись этой дроби в виде:
Умножая z на h получаем:
где σ-1 и z1 соответственно целая и дробные части этого произведения. При этом целая часть σ-1 есть старшая цифра в представлении числа z в h-системе.
Если теперь умножить на h правильную дробь z1, то целая часть произведения дает следующую цифру σ-2 в представлении числа в h системе.
Следовательно, можно сформулировать правило: для перевода правильной дроби из s-системы в систему счисления с основанием h нужно умножить исходную дробь и дробные части получающихся произведений на основание h, представленное в старой s-системе. Целые части получающихся произведений дают последовательность цифр в представлении дроби в h-системе.
Обычно перевод дробей из одной системы в другую производят приближенно.
При переводе неправильной дроби переводят отдельно целую и дробную части, руководствуясь соответствующими правилами.
Прямой, обратный и дополнительный коды
При проектировании вычислительных устройств необходимо решить вопрос о способе представления в машине положительных и отрицательных чисел и о признаке переполнения разрядной сетки. Указанный вопрос решается применением специальных колов для представления чисел. При помощи этих кодов операция вычитания (или алгебраического сложения) сводится к арифметическому сложению. В результате упрощаются арифметические устройства машин.
Для представления двоичных чисел в машине применяют прямой, обратный и дополнительный коды. Во всех этих кодах предусматривается дополнительный разряд для представления знака числа, причем знак «+» кодируется цифрой 0, а знак « — » - цифрой 1.
Положительные числа при прямом, обратном и дополнительном кодах имеют один и тот же вид, а отрицательные — различный.
Прямой код (G)пр двоичного числа G = ± 0, γ1, γ2, … , γn (γi = 1 или 0) определяется условиями:
Gпри G ≥ 0
(G)пр =
(1 – G) при G ≤ 0
Положительное двоичное число с запятой, фиксированной перед старшим разрядом,
G+ = + 0, γ1, γ2, … , γn
в прямом коде представляется в виде:
(G+) пр = 0, γ1, γ2, … , γn(1)
Аналогично отрицательное двоичное число:
G-= - 0, γ1, γ2, … , γn(1a)
в прямом коде представляется в виде:
(G-) пр = 1, γ1, γ2, … , γn(2)
Способы представления чисел (1) и (2) называются прямым кодом соответственно положительных и отрицательных двоичных чисел.
Сложение и вычитание в прямом, обратном и дополнительном кодах
Сложение в прямом коде чисел, имеющих одинаковые знаки, выполняется достаточно просто. Мантиссы складываются и сумме присваивается код знака слагаемых. Значительно более сложной является операция алгебраического сложения в прямом коде чисел с раз-
личными знаками. В этом случае приходится определять большое по модулю число, производить вычитание мантисс и присваивать разности знак большего (по модулю) числа. Таким образом, если положительные и отрицательные числа представлены в прямом коде, операции над кодами знаков и мантиссами выполняются раздельно.
Операция вычитания (алгебраического сложения) сводится к операции простого арифметического сложения при помощи обратного и дополнительного кодов, используемых для представления отрицательных чисел в машине. При этом операция сложения распространяется и на разряды знаков, рассматриваемых как разряды целой части числа.
Чтобы представить двоичное отрицательное число (1а) в обратном коде, нужно поставить в знаковый разряд единицу, а во всех других разрядах заменить единицы нулями, а нули — единицами:
(G-) обр = 1, σ1, σ 2, … , σ n(3)
σi= 1 при γi = 0 и σi= 0 при γi = 1.
При записи отрицательного числа в дополнительном коде ставят единицу в разряд знака, а цифровую часть числа заменяют дополнением модуля числа до целой единицы.
Отрицательное число G- = - 0, γ1, γ2, … , γn в дополнительном коде имеет вид:
(G-) доп = 1, ε1, ε 2, … , ε n(4)
где
0, ε1, ε 2, … , ε n = 1 - 0, γ1, γ2, … , γn(4a)
Установим связь между самим отрицательным числом G- и числами (G-)обр и (G-)доп , представляющими его обратный и дополнительный коды.
Вычитая (1а) из (3), имеем:
(G-) обр - G-= 1, σ1, σ 2, … , σ n – ( - 0, γ1, γ2, … , γn) = 1,11…1 = 2 – 2-n (так как σi + γi= 1)
Следовательно,
(G-) обр = G-+ 2 - 2-n (4b)
Вычитая (1a) из (4), имеем:
(G-) доп - G- = 1, ε1, ε 2, … , ε n - ( - 0, γ1, γ2, … , γn) (5)
Учитывая (4a), получаем:
(G-) доп = G-+ 2 (5а)
Из (5) и (5а) следует:
(G-) доп = (G-) обр + 2-n
где n — число разрядов в числе. Таким образом, дополнительный код может быть получен из обратного путем добавления к нему единицы младшего разряда.
Рассмотрим представление нуля. В процессе вычислений могут возникнуть «положительный» и «отрицательный» нули:
+ 0,00…0 ; - 0,00…0
Представление «положительного» нуля одинаково для прямого, обратного и дополнительного кодов:
(+ 0) пр = 0,00…0
Отрицательный нуль изображается: в прямом коде
(- 0) пр = 0,00…0
в обратном коде
(- 0) обр = 1,11…1
в дополнительном коде
(- 0) доп = 1,11…1 + 2-n = 0,00…0
так как перенос из разряда знака теряется.
Используя обратный или дополнительный код, можно операции вычитания и сложения чисел различных знаков свести к арифметическому сложению кодов чисел.
Рассмотрим использование обратного кода при алгебраическом сложении двух двоичных чисел G и Q, когда одно из них или оба числа отрицательны. Для этого случая может быть сформулировано следующее правило (предполагаем, что модуль алгебраической суммы меньше единицы).
При алгебраическом сложении двух двоичных чисел с использованием обратного кода положительные слагаемые представляются в прямом коде, а отрицательные - в обратном и производится арифметическое суммирование этих кодов, включая разряды знаков, которые при этом рассматриваются как разряды целых единиц. При возникновении переноса из разряда знака единица переноса прибавляется к младшему разряду суммы кодов (такой перенос называется круговым или циклическим). В результате получается алгебраическая сумма в прямом коде, если эта сумма положительна, и в обратном коде, если она отрицательна.
Рассмотрим теперь использование дополнительного кода для алгебраического сложения. Приведем соответствующее правило (полагаем, что модуль алгебраической суммы меньше единицы).
При алгебраическом сложении двух двоичных чисел с использованием дополнительного кода положительные слагаемые представляются в прямом коде, а отрицательные — в дополнительном и производится арифметическое суммирование этих кодов, включая разряды знаков, которые при этом рассматриваются как разряды целых единиц. При возникновении переноса из разряда знака единица переноса отбрасывается. В результате получается алгебраическая сумма в прямом коде, если эта сумма положительна, и в дополнительном коде, если эта сумма отрицательна.
В самом деле, если G- < 0 и Q- < 0 , то согласно (4b):
(G-) доп + (Q-) доп = G-+ 2 + G- + 2 = 2 + (G- + Q- + 2)
Так как -1 < G- + Q- < 0, то величина, стоящая в скобках, меньше двух, но больше единицы. Двойка, стоящая вне скобки, образует перенос из разряда знака, который будет отброшен. В результате получаем:
(G-) доп + (Q-) доп = (G- + Q-) + 2 = (G- + Q-) доп