Бройдо В.Л., Ильина О.П. Архитектура ЭВМ и систем (2006) (1186249), страница 17
Текст из файла (страница 17)
Обратный перевод из десятичной системы счисления в систему счисления с другим основанием непосредственно по формуле (1) для человека весьма затруднителен, поскольку все арифметические действия, предусмотренные этой формулой, следует выполнять в той системе счисления, в которую число переводится. Обратный перевод выполняется значительно проще, если предварительно преобразовать отдельно целую А!ч„и дробную Ф,„части выражения (1) к виду ~~ =(((" (~ -~ ' +~ -я)' + "° +пи)' +о~ )'Р+по) А1„=Р ' (а, +Р ' (а, +Р ' (а, + ... +Р '.(а „, еР ' а,)„,))).
Алгоритм перевода числа из десятичной системы счисления в систему счисления с основанием Р, основанный на этих выражениях, позволяет оперировать с числами в той системе счисления, из которой число переводится, и может быть сформулирован следующим образом: 1. При переводе смешанного числа следует переводить его целую и дробную части отдельно. 2. Для перевода целой части числа ее, а затем целые части получающихся частных от деления следует последовательно делить на основание Р до тех пор, пока очередная целая часть частного не окажется равной О.
Остатки от деления, записанные последовательно справа налево, образуют целую часть числа в системе счисления с основанием Р. 3. Для перевода дробной части числа ее, а затем дробные части получающихся произведений следует последовательно умножать на основание Р до тех пор, пока очередная дробная часть произведения не окажется равной 0 или не бу- В2 Глава В. Представление информации в вычислительных машинах дет достигнута нужная точность дроби.
Целые части произведений, записанные после запятой последовательно слева направо, образуют дробную часть числа в системе счисления с основанием Р. Рассмотрим перевод смешанного числа из десятичной в двоичную систему счисления на примере числа 46,625.
Переводим целую часть числа: 46/2 - 23 (остаток 0). 23/2 - 11 (остаток 1). 11/2 - 5 (остаток 1); 5/2 - 2 (остаток 1); 2/2 - 1 (остаток 0); 1/2 = 0 (остаток 1). Записываем остатки последовательно справа налево — 101110, то есть 46щв = 101110ь Переводим дробную часть числа: 0,625 ° 2 - 1,250; 0,250 2 - 0,500; 0,500 2 - 1,000. Записываем целые части получающихся произведений после запятой последовательно слева направо — 0,101, то есть: 0,625ш - 0,101ь Окончательно 46,6251о = 101110,101,. Представление чисел с фиксированной и плавающей запятой В вычислительных машинах применяются две формы представления двоичных чисел: (з естественная форма или форма с фиксированной запятой (точкой); 13 нормальная форма или форма с плавающей запятой (точкой).
В форме представления с фиксированной запятой все числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной. Например: в десятичной системе счисления имеется 5 разрядов в целой части числа (до запятой) и 5 разрядов в дробной части числа (после запятой); числа, записанные в такую разрядную сетку, имеют вид: +00721,35500; +00000,000328; -10301,20260. Эта форма наиболее проста, естественна, но имеет небольшой диапазон представления чисел и поэтому чаще всего неприемлема при вычислениях.
Диапазон значащих чисел Х в системе счисления с основанием Р при наличии тл разрядов в целой и з разрядов в дробной части числа (без учета знака числа) будет таким: Р ' <М<Р" -Р '. Например, при Р - 2, т - 10 и з - 6 числа изменяются в диапазоне 0,015 < М< 1024. Если в результате операции получится число, выходящее за допустимые пределы, произойдет переполнение разрядной сетки и дальнейшие вычисления потеряют смысл. В современных компьютерах естественная форма представления используется как вспомогательная и только для целых чисел.
В форме представления с плавающей запятой каждое число изображается в виде двух групп цифр. Первая группа цифр называется мантиссой, вторая — поряд- 83 Алгебраическое представление двоичных чисел ком, причем абсолютная величина мантиссы должна быть меньше 1, а порядок— целым числом. В общем виде число в форме с плавающей запятой может быть представлено так: 1((' = «М Р*', где М вЂ” мантисса числа ((М] < 1); г — порядок числа (целое число); Р— основание системы счисления.
Например, приведенные ранее числа в нормальной форме запишутся так: +О 721355 10з. +О 328 . 10-з. 0 103012026 10з Нормальная форма представления имеет огромный диапазон отображения чисел и является основной в современных компьютерах. Так, диапазон значащих чисел в системе счисления с основанием Р при наличии в( разрядов у мантиссы и з разрядов у порядка (без учета знаковых разрядов порядка н мантиссы) будет р-и р-(Р'-1) < Н ~ (1 р- п ) р(Р'-1) Приведем пример.
При Р = 2, т = 22 и з - 10 диапазон чисел простирается примерно от 10 зле до 10э)в. Для сравнения: количество секунд, которые прошли с момента образования планеты Земля, составляет всего 10'з. Следует заметить, что все числа с плавающей запятой хранятся в машине в так называемом нормализованном виде. Нормализованным называют такое число, в старшем разряде мантиссы которого стоит единица. У нормализованных двоичных чисел, следовательно, 0,5 < ]М'( < 1. Алгебраическое представление двоичных чисел Знак числа обычно кодируется двоичной цифрой, при этом код 0 означает знак «+Р (плюс), код 1 — знак « — ь (минус).
Для алгебраического представления чисел, то есть для представления чисел с учетом их знака, в вычислительных машинах используются специальные коды: (3 прямой код числа; (3 обратный код числа; (3 дополнительный код числа. При этом два последних кода позволяют заменить неудобную для компьютера операцию вычитания операцией сложения с отрицательным числом.
Дополнительный код обеспечивает более быстрое выполнение операций, поэтому в компьютере чаще применяется именно он. 1. Прямой код числа М вЂ” ]1()].р. Пусть Н = а( а, аз ... а: О если Ф > О, то ]Ф]те = О,а( аз аз ... а; О еслибы< О, то [У]РР =1,а( аз аз ...а; О если Ж- О, то имеет место неоднозначность: ]0]„р = 0,0... или - 1,0... Обобщая результаты, получим: 84 Глава 5. Представление информации в вычислительных машинах ]М, если И ~0, т(1-Ж, если У <0. Если при сложении оба слагаемых имеют одинаковый знак, то операция сложения выполняется обычным путем. Если при сложении слагаемые имеют разные знаки, то сначала необходимо выявить большее по абсолютной величине число, произвести из него вычитание меньшего по абсолютной величине числа и разности присвоить знак большего числа.
Выполнение операций умножения и деления в прямом коде выполняется обычным образом, но знак результата определяется по совпадению или несовпадению знаков участвовавших в операции чисел. Операцию вычитания в этом коде нельзя заменить операцией сложения с отрицательным числом, поэтому возникают сложности, связанные с заемом значений из старших разрядов уменьшаемого числа. В связи с этим прямой код в компьютере почти не применяется. 2.
Обратный код числа Ж вЂ” [)т]рвр. Обозначение а означает величину, обратную а (инверсию а), то есть если а-1,то а -О,инаоборот; О если М> О, то [М],~ =[И]„р =О,а, а, ав ...а; О если У < О, то [Ф]„е = 1, а, а, а, ... а; О если М = О, то имеет место неоднозначность, [0],~р = 0,00...0 или - 1,11...1. Для того чтобы получить обратный код отрицательного числа, необходимо все цифры этого числа инвертировать, то есть в знаковом разряде поставить 1, во всех значащих разрядах нули заменить единицами, а единицы — нулями. Например, число М - 0,1011, [У],вр = 0,1011.
Число М- — 0,1011, [Ф],~р - 1,0100. В случае, когда йр < О, [У],ьр - 10 — 1 10 "+ Лт, то есть [М]„ор - 1,1111 + У. Обобщая результаты, получим ~ Ж, если М > О, РЧ,е, = [10 — 1 10 "+У, еслибы <О. 3. Дополнительный код числа М вЂ” [Х]„„: О если У > О, то [)т'],.„= [Ф]„= О, а, а, а, ...
а О если У< О, то [У] „=1, а, а, а, ...а„+0,000...1. Для того чтобы получить дополнительный код отрицательного числа, необходимо все его цифры инвертировать (в знаковом разряде поставить единицу, во всех значащих разрядах нули заменить единицами, а единицы — нулями) и затем к младшему разряду прибавить единицу. В случае возникновения переноса из первого после запятой разряда в знаковый разряд к числу следует прибавить единицу в младший разряд. Например, У - 0,1011, [М]„„- 0,1011; Ж - -0,1100, [У],„„= 1,0100; У - -0,0000, [У]„н - 10,0000 - 0,0000 (1 исчезает).
Неоднозначности в изображении 0 нет. Прочие системы счисления Обобщая, можно записать: М,еслийг кО, 10 + У, если Лг < О. м совет Эмпирическое правило: лля получения дополнительного кода отрицательного числа необходимо инвертировать все символы этого числа, кроме последней (младшей) единицы н тех нулей, которые за ней следуют.