WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 || 3 | 4 |   ...   | 13 |

500–256=244. Тогда 15*16=240 и это значит, что во втором разряде находится цифра F. Последний остаток равен 4 (244–240). Искомое шестнадцатеричное число равно 1F4.

При втором способе последовательно делим 500 на 16, и процесс деления заканчивается, когда частное становится меньше 16 (рис.

1.2).

Рис. 1.2. Перевод числа из десятичной системы в шестнадцатеричную Операция перевода в десятичную систему проще, так как любое десятичное число можно представить в виде полинома x=a0*pn+a1*pn– +... +an–1*p1+an*p0, где a0... an – цифры числа в системе счисления с основанием p. Например, перевести число 1F4(16) в десятичную систему. По определению, 1F4= 1*162+F*161+4*160. Заменив F на 15, получим 1*162+15*161+4*160=500.

Очень просто осуществляется перевод чисел из двоичной системы в системы с основанием, равным степеням двойки (4,8,16 и т.д.), и наоборот (поэтому они и используются в качестве промежуточных при работе с компьютером). Для того чтобы целое двоичное число перевести в систему счисления с основанием 2n, нужно двоичное число разбить справа налево на группы по n цифр в каждой; если в последней левой группе окажется меньше n разрядов, то дополнить ее нулями до нужного числа разрядов; рассмотреть каждую группу как n-разрядное двоичное число и заменить ее соответствующей цифрой в системе счисления с основанием 2n. Аналогично выполняется перевод из системы счисления с основанием 2n в двоичную систему счисления. Рассмотрим примеры такого перевода.

Пример 1. Перевести 1010001010(2) в восьмеричную систему счисления:

1 0 1 0 0 0 1 0 1 триада 4 триада 3 триада 2 триада триада 1=010(2) =2(8);

триада 2=001(2) =1(8);

триада 3=010(2) =2(8);

триада 4=1(2) =1(8).

Тогда, располагая восьмеричные цифры по весам разрядов, получаем:

1010001010(2)=1212(8).

Пример 2. Перевести 4A3F(16) в двоичную систему счисления:

4(16)=0100(2) – тетрада;

A(16)=1010(2) – тетрада;

3(16)=0011(2) – тетрада;

F(16)=1111(2) – тетрада.

Тогда, располагая каждую тетраду с учетом ее веса, получаем:

4A3F(16)=0100101000111111(2)=100101000111111(2).

Перевод правильных дробей. Правильная дробь имеет целую часть, равную 0.

Перевод дробей из десятичной системы счисления в двоичную, восьмеричную или шестнадцатеричную системы (аналогично осуществляется перевод в любую позиционную систему):

а) исходная дробь умножается на основание системы счисления, в которую переводится (например, на 2, 8 или 16);

б) в полученном произведении целая часть записывается в соответствии с табл. 1.1 цифрой системы счисления, в которую осуществляется перевод (она является старшей цифрой получаемой дроби в новой системе счисления);

в) полученная на предыдущем шаге целая часть отбрасывается, и оставшаяся дробная часть (это правильная дробь) вновь умножается на основание системы счисления с последующей обработкой полученного произведения в соответствии с шагами а) и б);

г) процедура умножения продолжается до тех пор, пока не будет получен нулевой результат в дробной части произведения (дробь переводится точно) или не будет достигнута требуемая точность, а именно необходимое число разрядов дробной части (дробь переводится приближенно);

д) формируется искомое число путем последовательной записи полученных в шаге б) цифр, т.е. в порядке уменьшения веса разрядов.

Рассмотрим пример такого перевода (рис. 1.3).

Пример 1. Выполнить перевод десятичного числа 0,641 в двоичную систему счисления. Перевод выполнить с точностью до двух значащих цифр после запятой. Более эффективным путем достижения цели будет перевод числа вначале в шестнадцатеричную/восьмеричную систему, а затем – в двоичную.

Рис. 1.3. Перевод дроби из десятичной системы в шестнадцатеричную Таким образом, 0,641(10)0,A4(16)=0,11011001(2). Отметим, что третья получаемая шестнадцатеричная цифра после запятой равная 1, использована для округления предыдущего разряда по правилу «половина веса отбрасываемого разряда». Здесь «половина веса отбрасываемого разряда» равна 8.

Пример 2. Выполнить перевод числа 0,147(16) в двоичную систему счисления:

1(16)=0001(2);

4(16)=0100(2);

7(16)=0111(2).

Тогда, располагая тетрады с учетом их веса, получаем:

0,147(16)=0,000101000111(2).

Перевод смешанных чисел. Смешанным числом в дальнейшем будем называть вещественное число, имеющее как целую, так и дробную части, отличные от нуля.

При переводе таких чисел отдельно переводится целая часть числа, отдельно – дробная. Результаты суммируются.

Пример 1. Выполнить перевод из десятичной системы счисления в шестнадцатеричную систему числа 19,847. Перевод выполнять с точностью до двух значащих цифр после запятой.

Представим исходное число как сумму целого числа и правильной дроби:

19,847(10)=19(10)+0,847(10);

19(10)=13(16)=00010011(2)=10011(2);

0,847(10)0,D9(16)=0,11011001(2).

Тогда, располагая тетрады с учетом их веса, получаем:

19,847(10)=10011,11011001(2).

Пример 2. Выполнить перевод числа 2ВС,247(16) в двоичную систему счисления:

2(16)=0010(2);

В(16)=1011(2);

С(16)=1100(2);

2=0010(2);

4=0100(2);

7=0111(2).

Тогда, располагая тетрады с учетом их веса, получаем:

2ВС,247(16)=001010111100,001001000111(2)=1010111100,001001000111(2).

2. Форматы представления чисел в цифровых процессорах Цифровой процессор – это устройство, осуществляющее обработку информации, представленной в цифровом виде. Он может быть универсальным (центральный процессор) или специализированным.

Одной из основных его характеристик является «разрядность процессора». Разрядность процессора – это количество битов в регистре процессора, которое за один такт работы используется для выполнения операций сложения, вычитания или сдвига. При выполнении арифметических операций цифровой процессор использует представление чисел (называемых операндами) в регистрах или оперативной памяти в одном из следующих форматов:

1) формат с фиксированной точкой;

2) формат с плавающей точкой;

3) формат двоично-десятичного кода.

Рассмотрим каждый из этих форматов.

2.1. Формат с фиксированной точкой Формат с фиксированной точкой (ФТ), в зависимости от представляемых чисел, имеет три вида (табл. 2.1).

Таблица 2.Форматы чисел с ФТ Вид ФТ без знака Целые числа со знаком без знака Дробные числа со знаком без знака Смешанные числа со знаком Рассмотрим на примерах представление чисел (операндов) в каждом из этих видов. Начнем с формата целых чисел (в дальнейшем будем использовать восьмиразрядный процессор, если не оговорено иное). Целое число К, заданное в восьмеричной системе счисления, представим в формате с ФТ.

К=51(8)=101001(2).

Без знака:

0 0 1 0 1 0 0 Со знаком:

знак 0 1 0 1 0 0 Дробное число М, заданное в восьмеричной системе счисления, представим в формате с ФТ.

М=0,51(8)=0,101001(2).

Без знака:

1 0 1 0 0 1 0 Со знаком:

знак 1 0 1 0 0 1 Смешанное число L, заданное в восьмеричной системе счисления, представим в формате с ФТ в шестнадцатиразрядном процессоре, где левые 8 бит отведены под целую часть числа, включая знак, а остальные 8 – под дробную часть.

L=51,15(8)=101001,001101(2).

Без знака:

0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 Со знаком:

знак 0 1 0 1 0 0 1 0 0 1 1 0 1 0 2.2. Формат с плавающей точкой Операнды цифрового процессора в формате с плавающей точкой представляют числа в экспоненциальной форме. Такой формат используется в основном в научно-технических расчетах, когда диапазон чисел в вычислениях может варьироваться от очень малых величин до очень больших. В отличие от формата с ФТ, в котором выполняются точные вычисления, операции в таком формате выполняются с приближением, определяемым разрядной сеткой процессора.

Число 2008(10) в экспоненциальной форме можно представить как 2008(10)=20,08*102=0,002008*106=0,2008*104.

Такое представление числа состоит из двух частей: мантиссы и порядка. Для приведенного выше примера мантисса равна 20,08 или 0,002008, или 0,2008. Порядок равен соответственно 2 или 6, или 4.

Любое число в экспоненциальной форме имеет множество представлений. Среди этих представлений есть так называемое нормализованное представление числа. Для каждого числа это представление – единственное. При нормализированном представлении числа в экспоненциальной форме мантисса (М) должна быть в интервале 0,1(d)М<1(d), где d – основание системы счисления.

Например, для числа 2008(10) нормализованное представление равно 0,2008*104. Для числа 0,0002АВВ(16) нормализованное представление равно 0,2АВВ*10–3. Для числа 11010,0001(2) нормализованное представление равно 0,110100001*105. Следует обратить внимание, что 10 – это основание системы счисления, т.е. для десятичной оно равно 10(10), для шестнадцатеричной равно 16(10), для двоичной равно 2(10), В настоящее время общепринятым стандартом представления операндов в формате с плавающей точкой в цифровом процессоре является стандарт IEEE 754. В IEEE 754 число в экспоненциальной форме представляется операндом в двоичной системе счисления, состоящим из двух частей: мантиссы и порядка. Каждая из этих частей имеет знак. Мантисса представляется в прямом коде, а порядок «смещен» (увеличен) на константу. Смещение порядка на константу позволяет обойтись без явного бита знака порядка. Если значение смещенного порядка больше константы, он – положительный, если меньше – отрицательный. Есть три формата представления чисел с плавающей точкой в оперативной памяти процессора: «короткий вещественный (КВ)», «длинный вещественный (ДВ)», «внутренний вещественный (ВВ)». Они отличаются диапазоном представимых в них чисел. Первые два из них приведены на рис. 2.1.

На рис. 2.1 используются следующие обозначения: М – мантисса числа; S – знак мантиссы; Р – порядок числа.

Рис. 2.1. Форматы с плавающей точкой КВ и ДВ В формате КВ под мантиссу отводится 24 бит, а под порядок – 8 бит.

Величина порядка операнда смещена на 127(10), т.е. Р=Рх+127(10).

В формате ДВ под мантиссу отводится 53 бит, а под порядок – 11 бит. Величина порядка операнда смещена на 1023(10), т.е. Р=Рх+1023(10).

В формате ВВ под мантиссу отводится 64 бит, а под порядок – 15 бит.

Величина порядка операнда смещена на 16383(10), т.е. Р=Рх+16383(10).

Поскольку при нормализованном представлении операнда (0,1(2) М<1(2)) в двоичной системе счисления первая цифра мантиссы после запятой всегда будет равна «1», это можно использовать для увеличения диапазона представимых чисел, для чего диапазон представления мантиссы нормализованного числа меняется на диапазон 1(2)М<2(2).

Причем единица целой части мантиссы учитывается неявно, т.е.

под нее не отводится бит. В таком виде операнд хранится в памяти процессора. При выполнении арифметических операций над ним, при извлечении из памяти в операционный автомат этот скрытый бит восстанавливается, т.е. присутствует в явном виде.

В дальнейшем в пособии будет рассматриваться только формат КВ, поскольку представление в двух других форматах и алгоритмы выполнения арифметических операций полностью аналогичны.

Рассмотрим примеры представления операндов в формате КВ.

Будем обозначать мантиссу через М, а порядок – через Р.

Пример 1. Представить число 16,АС(16) в формате КВ.

16,АС(16)=10110,10101100(2)=1,011010101100(2)*10100.

М=1,011010101100(2);

Р=100(2)+(127(10)=1111111(2))=10000011(2).

Тогда формат КВ этого числа (серым цветом выделены биты порядка) будет:

0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 байт байт байт байт Пример 2. Представить число – 7,С8(16) в формате КВ.

–7,С8(16)= –111,11001000(2)= –1,1111001000(2)*1010.

М= – 1,1111001000(2);

Р=10(2)+(127(10)=1111111(2))=10000001(2).

Тогда формат КВ этого числа (серым цветом выделены биты порядка) будет:

1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 байт байт байт байт Пример 3. Представить число – 0,003А(16) в формате КВ.

–0,003А (16)= –0,0000000000111010(2)= –1,11010(2)*10 –1011.

М= –1,11010(2);

Р= –1011(2)+(127(10)=1111111(2))=01110100(2).

Тогда формат КВ этого числа (серым цветом выделены биты порядка) будет:

1 0 1 1 1 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 байт байт байт байт Пример 4. Перевести число из формата КВ в шестнадцатеричную систему счисления.

1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 байт байт байт байт М= – 1,000101011(2);

Р=10000100(2) – (127(10)=1111111(2)) =101(2).

– 1,000101011(2)*10101= – 100010,1011(2)= – 22,В(16).

В этих трех форматах, кроме допустимого множества значений операндов, предусмотрены специальные значения, представляющие «бесконечность», «минус бесконечность», «минус 0» и «не число» (обозначается NaN). Эти значения существуют для того, чтобы в случае возникновения ошибок, например арифметического переполнения, извлечения квадратного корня из отрицательного числа и деления на «0», можно было определенным двоичным кодом представить результат операции. Эти специальные значения сведены в табл. 2.2.

Таблица 2.Специальные значения формата с ПТ Представление числа Специальное Комментарий число Знак М Порядок Мантисса 0 11…11 11…11 Положительное «не + NaN число» 0 11…11 00…+ 0 11…11 00…00 «Плюс бесконечность» Положительное Положительное де0 00…00 11…денормализованное нормализованное 0 00…00 00…число число 0 00…00 00…00 «Плюс 0» Нуль 1 00…00 00…00 «Минус 0» Отрицательное Отрицательное де1 00…00 00…денормализованное нормализованное 1 00…00 11…число число «Минус – 1 11…11 00…бесконечность» 1 11…11 00…01 Отрицательное «не –NaN число» 1 11…11 11…Неопределенное Неопределенность 1 11…11 10…значение 2.3. Формат двоично-десятичного кода Формат двоично-десятичного кода (BCD – binary coded decimal) используется в экономических расчетах. Так же как и в формате с ФТ, вычисления, выполняемые процессором в этом формате, точные.

Представление числа в BCD-коде – это такое представление, когда каждая десятичная цифра кодируется четырехбитовым кодом.

Четырехбитовый код десятичной цифры будем называть в дальнейшем тетрадой и обозначать d=t(w1,w2,w3,w4), где d – десятичная цифра; t – соответствующая ей тетрада; wi – двоичный разряд, равный 0 или 1.

Можно предложить очень большое число таких кодов. Но для эффективного выполнения арифметических операций в цифровом процессоре BCD-код должен удовлетворять следующим четырем условиям:

1) большей десятичной цифре должен соответствовать больший двоичный код;

2) величина десятичной цифры должна очень просто определяться по значению тетрады, т.е. каждый двоичный разряд должен иметь определенный вес. Тогда значение десятичной цифры определяется как d=t(w1,w2,w3,w4)=w1*р1+w2*р2+w3*р3+w4*р4, где wi – значение двоичного разряда; рi – вес разряда;

3) желательно (не обязательно), чтобы имелось соответствие между четностью десятичной цифры и четностью соответствующего ей кода тетрады;

4) желательно (не обязательно), чтобы получение дополнительного и обратного кодов происходило по обычному правилу.

Наиболее широко в цифровых процессорах используются следующие три BCD-кода (табл. 2.3):

- 8421;

- 8421+3;

- 2421.

Таблица 2. Примеры BCD-кодов Код Десятичная цифра 8421 8421+3 0 0000 0011 1 0001 0100 2 0010 0101 3 0011 0110 4 0100 0111 Окончание табл. 2.Код Десятичная цифра 8421 8421+3 5 0101 1000 6 0110 1001 7 0111 1010 8 1000 1011 9 1001 1100 Выполнение вышеперечисленных условий для BCD-кодов приводится в табл. 2.4.

Таблица 2.Выполнение условий для кодов Коды 8421 8421+3 Выполняются условия 1, 2, 3 1, 2, 4 1, 2, 3, Несмотря на то что всем условиям удовлетворяет только код 2421, наибольшее применение получил BCD-код 8421.

Рассмотрим примеры представления в цифровых процессорах десятичных чисел в BCD-кодах.

Пример 1. Представить число 349(10) в каждом из всех BCD-кодов в шестнадцатиразрядном процессоре, в котором одна тетрада отводится под знак, а остальные три – под числовые разряды (прямой код).

Код 8421:

знак числовые разряды 0000 0011 0100 Код 8421+3:

знак числовые разряды 0000 0110 0111 Код 2421:

знак числовые разряды 0000 0011 0100 Пример 2. Представить число – 940(10) в каждом из всех BCD-кодов в шестнадцатиразрядном процессоре, в котором одна тетрада отводится под знак, а остальные три – числовые разряды (прямой код).

Код 8421:

знак числовые разряды 111 100 010 1 1 0 Код 8421+3:

знак числовые разряды 1111 1100 0111 Код 2421:

Pages:     | 1 || 3 | 4 |   ...   | 13 |






















© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.