Перевод правильной дроби. Алгоритм заключается в последовательном умножении этой дроби на новое основание r(s) (по правилам исходной системы), причем умножают только дробные части. Дробь X(r) в новой системе счисления будет представлена последовательностью целых частей произведений в порядке их получения, т. е. в старшем разряде будет представлена целая часть первого произведения. Операции умножения заканчиваются при заполнении всех отведенных для двоичного числа разрядов (или, когда дробная часть произведения становится равной нулю).
При переводе неправильной дроби переводят отдельно целую и дробную части, руководствуясь соответствующими правилами.
2.Перевод чисел с использованием арифметики новой системы счисления.
В этом случае исходное число изображают в виде полинома
(1). При этом исходное основание и все цифры представляют в новой системе. Подобный подход применяют при переводе чисел в десятичную систему счисления.
3.Перевод чисел в системах счисления с кратными основаниями.
Если для оснований систем счисления s и r справедливо соотношение s = rk, где k – целое положительное число, то такие системы называются системами счисления с кратными основаниями.
Системами с кратными по отношению друг к другу основа-
ниями являются двоичная, восьмеричная и шестнадцатеричная системы (23 = 8; 24 = 16).
Перевод чисел в системах с кратными основаниями не требует выполнения арифметических действий и производится достаточно просто путем замены цифр соответствующими аналогами.
Случай, когда основание исходной системы счисления выше
основания новой системы s > r, например перевод X(8) → X(2) ; X(16) → X(2) . Каждый символ числа X(s) заменяют его k-разрядным
представлением в r-системе.
Приведем примеры перевода чисел. Пусть s = 8; r = 2; k = 3. Исходное число: X(8) = 63,425. Эквивалентное число X(2) =
= 110 011, 100 010 101. Каждый восьмеричный символ заменен двоичной триадой.
Пусть s = 16; r = 2; k = 4.
6
Исходное число X(16) = 8A9, 5F. Эквивалентное число X(2) = = 1000 1010 1001, 0101 1111.
Случай, когда основание исходной системы ниже основания
новой системы, например X(2) → X(8) ; X(2) → X(16) .
Число в исходной s-системе разбивают на группы по k разрядов (вправо и влево от запятой); неполные группы добавляются нулями (справа – для дробной части; слева – для целой части). Каждую группу из k символов системы счисления с основанием s заменяют одним эквивалентным ей символом системы с основанием r.
Пусть X(2) → X(16) . Тогда исходное число X(2) = 1001110011,
11110011.
Исходное число с разбивкой и с добавлением нулей имеет вид
X(2) = 0010 0111 0011, 1111 0011. Эквивалентное число X(16) = = 273, F3.
3. ФОРМЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ
Компьютер оперирует с числами, содержащими конечное число разрядов (количество разрядов ограничено шириной шины данных). Для представления чисел в компьютере используются две формы: естественная (с фиксированной запятой) и нормальная (с плавающей запятой).
Естественная форма представления чисел предполагает, что положение запятой, отделяющей целую часть от дробной, фиксировано в разрядной сетке машины, т. е. для целой и дробной части числа отведено фиксированное число разрядов. Для представления знака выделен специальный разряд – знаковый. Обычно это крайний левый разряд. Для положительных чисел в знаковом разряде записан 0, а для отрицательных – 1.
Количество двоичных разрядов и положение запятой в разрядной сетке определяют такие важные характеристики компьютера, как точность и диапазон представляемых чисел.
Если при выполнении вычислений значения чисел выйдут за пределы разрядной сетки слева, т. е. за пределы допустимого диапазона, то возникнет ошибка. Чтобы избежать этого, исходные числа необходимо масштабировать.
7
Достоинством представления чисел в форме с фиксированной запятой является возможность построения сравнительно несложных операционных устройств с высоким быстродействием.
Нормальная форма представления чисел (с плавающей запятой) позволяет избежать трудоемкого масштабирования исходных чисел и значительно увеличить диапазон представляемых чисел.
Представление числа с плавающей запятой определяется выражением X(s) = Ms p , где M – мантисса числа; s p – характеристи-
ка числа; p – порядок числа. Мантисса и порядок заданы в системе счисления с основанием s. Знак числа совпадает со знаком мантиссы.
Мантисса в ЭВМ обычно представляет собой правильную дробь в нормализованном виде (первая цифра справа от запятой в числе должна быть отличной от нуля). Таким образом, значения нормализованных мантисс должны удовлетворять неравенству
s−1 ≤ M < 1. Код нормализованной мантиссы в двоичной системе счисления можно представить как M = Z1X–2 X–3 … X–m, где Z – код знака мантиссы.
4.ОПЕРАЦИИ ПРЕОБРАЗОВАНИЯ ДВОИЧНЫХ КОДОВ
Впамяти компьютера положительные и отрицательные числа хранятся в прямом двоичном коде. В этом же коде выполняют сложение положительных чисел, перемножение модулей чисел и некоторые другие операции. Для записи положительного и отрицательного двоичного числа в прямом коде в разрядную сетку машины надо в знаковый разряд поместить знак числа. Разряды модуля числа для чисел, отличающихся только знаками, в прямом коде совпадают.
Отрицательные числа могут быть представлены еще в двух кодах: обратном и дополнительном.
Для получения обратного кода отрицательного числа необходимо в знаковом разряде записать 1 и инвертировать все цифры разрядов числа, т. е. единицы заменить нулями, а нули – единицами.
Для получения дополнительного кода отрицательного числа необходимо в знаковый разряд поместить 1, все цифры числа инвер-
8
тировать, а затем в младший разряд добавить 1. Для положительных чисел прямой, обратный и дополнительный коды совпадают.
Приведем примеры получения машинных кодов для положи-
тельного и отрицательного числа. |
X = + 0,1110010. |
|
[X]пр = |
Пусть положительное число |
Тогда |
||
= 0 111 0010, [X]обр = 0 111 0010, [X]доп = 0 111 0010. |
|
|
|
Пусть отрицательное число |
X = – 0,1110010. |
Тогда |
[X]пр = |
=1 111 0010, [X]обр = 1 000 1101, [X]доп = 1 000 1110.
Использование дополнительного или обратного кода позволяет
операцию вычитания свести к операции алгебраического суммирования: А – В = А + (–В).
Получить прямой код из обратного или дополнительного можно по тем же правилам:
[X]пр = [[X]доп]доп, [X]пр = [[X]обр]обр.
Для представления целых чисел, задающих порядки чисел с плавающей запятой, применяют так называемый смещенный код с отрицательным нулем [1]:
Xсм = A – 1 + X,
где A – смещение, равное весу старшего разряда, A = 2n; n – номер старшего разряда.
Диапазон представляемых чисел в этом случае следующий: для положительных чисел 0 ≤ X ≤ A , а для отрицательных
0 ≤| X |≤ A −1.
Операции, выполняемые в компьютере над двоичными кодами чисел, можно разделить на два типа: без изменения кодов исходных операндов и с преобразованием кодов исходных операндов.
К первым относятся операции пересылок операндов с выходов одних устройств на входы других устройств и операции хранения операндов в памяти компьютера.
Ко вторым относятся арифметико-логические операции, выполняемые микропроцессором над кодами операндов. Эти операции выполняются по правилам двоичной арифметики или с использованием правил алгебры логики.
Рассмотрим поразрядные операции над кодами.
Поразрядные операции – операции, которые выполняются над одноименными разрядами операндов независимо от соседних разрядов.
9
Поразрядное инвертирование – операция, при которой каждый разряд xi некоторого кода превращается в xi = 1− xi . Операция ис-
пользуется приполучении обратного идополнительногокода чисел. Поразрядное сложение (обозначаемое знаком ) двух чисел заключается в выполнении над одноименными разрядами опера-
ции суммирования в соответствии с правилом
0 0 =0, 0 1 =1, 1 0 =1, 1 1 = 0,
При последней операции 1 переносится в старший разряд. Поразрядное сложение используется, например, при сравнении
двух кодов на равенство (если сравниваемые коды одинаковые, то в результате получается код, состоящий из одних нулей).
Поразрядные логические операции – операции, при которых над одноименными разрядами выполняются логические операции конъюнкции , дизъюнкции и др. Операции используются для модификации команд и чисел.
Операции сдвига – операции, при которых выполняется одновременный сдвиг цифр кода влево или вправо на фиксированное количество позиций. Арифметический сдвиг – смещение всей числовой последовательности (вправо или влево) без изменения позиций знака числа. Для положительных и отрицательных чисел в прямом коде при сдвиге влево или вправо освободившиеся разряды заполняются нулями.
При арифметическом сдвиге влево на одну позицию числа в прямом коде [X]пр = 10011011 получим число 10110110, а при сдвиге вправо на два разряда – 10000110.
Для отрицательных чисел в обратном коде освобождающиеся разряды (старший и младшие) заполняются единицами. Например, если число, представленное обратным кодом, имеет вид [X]обр = 11100100, то после сдвига на два разряда влево получим 10010011, а при сдвиге на один разряд вправо – 11110010.
Для отрицательных чисел в дополнительном коде освобождающиеся старшие разряды заполняются единицами, а освобождающиеся младшие разряды – нулями.
Пусть [X]доп = 11100101. После сдвига влево на два разряда получим 10010100, а после сдвига вправо на один разряд – 11110010.
Операция нормализации. Нормализованное число с плавающей запятой должно иметь мантиссу, у которой первая цифра после запятой отлична от нуля. При выполнении арифметических опера-
10