Системы счисления

четырех старших разрядах модуля мантиссы. Диапазон представления чисел в этом случае существенно расширяется, находясь при том же количестве разрядов в пределах от до .


5.2 Прямой, обратный и дополнительный коды. Модифицированный код


При рассмотрении элементарных арифметических операций над двоичными числами мы уже коснулись темы отрицательных двоичных чисел. Теперь рассмотрим ее подробнее.

Для кодирования знака двоичного числа используется старший ("знаковый") разряд (ноль соответствует плюсу, единица – минусу).

Такая форма представления числа называется прямым кодом.

В ЭВМ прямой код применяется только для представления положительных двоичных чисел. Для представления отрицательных чисел применяется либо дополнительный, либо обратный код, так как над отрицательными числами в прямом коде неудобно выполнять арифметические операции.

Правила для образования дополнительного и обратного кода состоят в следующем:

  • для образования дополнительного кода отрицательного числа необходимо в знаковом разряде поставить единицу, а все цифровые разряды инвертировать (заменить 1 на 0, а 0 – на 1), после чего прибавить 1 к младшему разряду;

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

  • при данных преобразованиях нужно учитывать размер разрядной сетки.

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


В таблице 5.1 пpиведены десятичные числа и их двоичные пpедставления в тpех pазличных фоpмах. Интеpесно в ней вот что. Если начать счет с числа 1000 (–8) и двигаться вниз по столбцам, то в дополнительном коде каждое последующее число получается пpибавлением единицы к пpедыдущему без учета пеpеноса за пpеделы четвеpтого pазpяда Так пpосто эту опеpацию в пpямом и обpатном кодах не осуществить. Эта особенность дополнительного кода и явилось пpичиной пpедпочтителного пpименения его в совpеменных микpо и миниЭВМ.

Итак, числа, пpедставленные в дополнительном коде, складываются по пpавилам двоичного сложения, но без учета каких либо пеpеносов за пpеделы стаpшего pазpяда. Рассмотpим это на пpимеpах 5.1.


Таблица 5.1 Прямой, обратный и дополнительный коды

.

Десятичное

число

Прямой

код

Обратный

код

Дополнительный

код

-8 1000
-7 1111 1000 1001
-6 1110 1001 1010
-5 1101 1010 1011
-4 1100 1011 1110
-3 1011 1100 1101
-2 1010 1101 1110
-1 1001 1110 1111
0

1000

0000

1111

0000

0000
1 0001 0001 0001
2 0010 0010 0010
3 0011 0011 0011
4 0100 0100 0100
5 0101 0101 0101
6 0110 0110 0110
7 0111 0111 0111

Пример 5.1 Двоичное сложение в дополнительном коде


1) + +2 + 0010
2) + -2 + 1110
3) + +5 + 0101

+5 0101

-6 1010

-4 1100


+7
0111


-8
1000


+1
0001

Еще одним достоинством дополнительного кода является то, что нуль, в отличие от пpямого и обpатного кодов, пpедставляется одним кодом. Наличие 0 в знаковом бите пpи пpедставлении нуля опpеделяет его как величину положительную, что согласуется с математической теоpией чисел и соглашениями, пpинятыми во всех языках пpогpаммиpования.

Из приведенных примеров следует, что положительные числа в прямом, обратном и дополнительном кодах совпадают. В прямом и обратном коде нуль имеет два представления – «положительный» и «отрицательный» нуль.

Отметим, что при представлении с плавающей запятой отдельно кодируется мантисса и порядок числа. При этом возможно представление мантисс и порядков чисел в одном и том же или разных кодах. Например, порядок числа может быть представлен в прямом, а мантисса – в дополнительном кодах и т. п.

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

При сложении чисел, меньших единицы, в машине быть получены числа, по абсолютной величине большие единицы. Для обнаружения переполнения разрядной сетки в ЭВМ применяются модифицированные прямой, обратный и дополнительный коды. В этих кодах знак кодируется двумя разрядами, причем знаку "плюс" соответствует комбинация 00, а знаку "минус" - комбинация 11.

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

Признаком переполнения служит появление в знаковом разряде суммы комбинации 01 при сложении положительных чисел (положительное переполнение) или 10 при сложении отрицательных чисел (отрицательное переполнение). Старший знаковый разряд в этих случаях содержит истинное значение знака суммы, а младший является старшей значащей цифрой числа. Для коррекции переполнения число нужно сдвинуть в разрядной сетке на один разряд вправо, а в освободившийся старший знаковый разряд поместить цифру, равную новому значению младшего знакового разряда. После корректировки переполнения мантиссы результата необходимо увеличить на единицу порядок результата.


5.3 Двоично-десятичное кодирование


Для осуществления автоматического перевода десятичных чисел в двоичную систему счисления необходимо вначале каким-то образом ввести их в машину, Для этой цели обычно используется двоично-десятичная запись чисел или представление этих чисел в кодах ASCII.

При двоично-десятичной записи каждая цифра десятичного числа заменяется четырехзначным двоичным числом – тетрадой (таблица 5.2).


Таблица 5.2 Наиболее распространенные двоично-десятичные коды чисел от 0 до 9


Десятичное число

Двоично-десятичный код (8421)


Код Айкена (2421) Код «с избытком 3»

0

1

2

3

4

5

6

7

8

9

0

0

0

0

0

0

0

0

1

1

0

0

0

0

1

1

1

1

0

0

0

0

1

1

0

0

1

1

0

0

0

1

0

1

0

1

0

1

0

1

0

0

0

0

0

1

1

1

1

1

0

0

0

0

1

0

1

1

1

1

0

0

1

1

0

1

0

0

1

1

0

1

0

1

0

1

0

1

0

1

0

0

0

0

0

1

1

1

1

1

0

1

1

1

1

0

0

0

0

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

1

0


Например, число в двоично-десятичном коде записывается в виде 0011 0110 0000. Для выполнения сложения и вычитания двоично-десятичных чисел наиболее удобно использовать самодополняющиеся коды, к числу которых относятся код Айкена, код “с избытком 3 ”. Код Айкена отличается от обычного двоично-десятичного, имеющего весовые коэффициенты разрядов в тетрадах 8421, другими значениями весовых коэффициентов разрядов: 2421. Код “с избытком 3”получается из обычного двоично-десятичного арифметическим прибавлением числа 3 (двоичное число 0011).

Как видно из таблицы 5.2 обратный код числа, представленного в каком-либо самодополняющемся двоично-десятичном коде ,является его двоичным дополнением до 9. Например, число 5 в коде «с избытком 3» =1000 имеет обратный код =0111, соответствующий числу 4 в коде «с избытком 3», которое «дополняет» число 5 до 9, так как 5+4=9.

При записи чисел в кодах ASCII цифрам от 0 до 9 поставлены в соответствие восьмиразрядные двоичные коды от 00110000 до 00111001.

ЭВМ, предназначенные для обработки экономической информации, например IBM AT, позволяют производить арифметические операции в десятичной системе счисления над числами, представленными в двоично-десятичных кодах и кодах ASCII.


6 Алгебраические действия над числами с плавающей и фиксированной запятой


6.1 Сложение чисел с фиксированной запятой


Алгебраическое сложение чисел с фиксированной запятой в цифровых машинах может производиться в одном из машинных кодов: прямом, дополнительном или обратном. Чаще всего используется либо дополнительный, либо обратный код. При этом знаковый разряд и цифровая часть числа рассматривается как единое целое, в результате чего с отрицательными числами машина оперирует как с положительными, независимо от того, представлены ли они в виде правильных дробей или в виде целых чисел. Главное достоинство дополнительного и обратного кодов заключается в том, что правильный знак суммы получается автоматически в процессе суммирования знаковых цифр операндов и цифры переноса из соседнего младшего разряда. В случае возникновения единицы переноса из знакового разряда суммы ее нужно отбросить при сложении в дополнительном коде и прибавить к младшему разряду суммы при сложении в обратном коде (т. е. произвести циклический перенос единицы переполнения).

Алгебраическое сложение многоразрядных чисел обычно организуется как регулярный процесс, состоящий из n одинаковых операций поразрядного сложения-вычитания, где n – количество разрядов в каждом из операндов).

При этом в зависимости от знаков слагаемых возможны четыре случая:

1) Х1 > 0, Х2 > 0, Х3 = Х1 + Х2 > 0;

2) Х1 > 0, Х2 < 0, Х3 = Х1 + Х2 > 0;

3) Х1 > 0, Х2 < 0, Х3 = Х1 + Х2 < 0;

4) Х1 < 0, Х2 < 0, Х3 = Х1 + Х2 < 0;

6.2 Сложение чисел с плавающей запятой


Если имеются два числа в нормальной форме: Х1 = m1 10P1 и Х2 = m2 10P2 , то для того чтобы их можно было сложить, нужно предварительно привести их к одному и тому же порядку Робщ, т. е. преобразовать одно из слагаемых, например, первое следующим образом:

Х1 = m1 10P1 = m1* 10P1 = m1* 10Pобщ

Далее можно вынести степень основания системы за скобки и произвести сложение мантисс: Х1 + Х2= m1* 10Pобщ + m2 10Pобщ. = (m1* + m2 ) 10Pобщ

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

Машинная операция сложения чисел в нормальной форме распадается таким образом, на 4 этапа:

  • Уравниваются порядки слагаемых: меньший порядок увеличивается до большего, мантисса преобразуемого числа сдвигается вправо (число денормализуется) на соответствующее количество разрядов. Практически в машинах производится вычитание порядков операндов. Знак и модуль разности Р1 - Р2 определяют соответственно, какое из слагаемых нужно преобразовывать и на сколько единиц следует сдвигать мантиссу преобразуемого числа.

  • Производится преобразование мантисс слагаемых в один из модифицированных кодов.

  • Мантиссы слагаемых суммируются по правилам сложения дробных чисел с фиксированной запятой.

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


6.3 Умножение чисел с фиксированной запятой


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

  • Определяется знак произведения с помощью сложения знаковых цифр сомножителей по модулю два, где нуль соответствует плюсу, а единица - минусу:

0 0 = 0

0 1 = 1

1 0 = 1

1 1 = 0

  • Производиться перемножение модулей сомножителей, затем в случае необходимости округление полученного модуля произведения, после чего к модулю результата приписывается его знак, определенный на первом этапе.

Умножение производится по обычным правилам арифметики согласно двоичной таблицы умножения.

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


6.4 Умножение чисел с плавающей запятой


Если имеем два сомножителя, заданные в нормальной форме Х1 = m1 10P1 и Х2=m210P2, то их произведение определяется следующим образом:

Х1 Х2 = m1 m2 10P1+P2.

Анализ этого соотношения показывает, что умножение чисел в машинах с плавающей запятой производится в четыре этапа:

  • Определение знака произведения путем сложения по модулю два знаковых цифр мантисс сомножителей.

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

  • Определение порядка произведения путем алгебраического сложения порядков сомножителей с использованием либо дополнительного, либо обратного модифицированного кода.

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


7 Другие системы счисления


Пpи наладке аппаpатных сpедств (пpогpамм BIOS и т.д.) и написании новых пpогpамм (особенно на языках низкого уpовня типа ассемблеpа или C) чисто возникает необходимость заглянуть в память машины, чтобы оценить ее текущее состояние. Но там все заполнено длинными последовательностями нулей и единиц, очень неудобных для воспpиятия. Кpоме того, естественные возможности человеческого мышления не позволяют оценить быстpо и точно величину числа, пpедставленного, напpимеp , комбинацией из 16 нулей и единиц. Для облегчения воспpиятия двоичного числа pешили pазбить его на гpуппы pазpядов, напpимеp, по тpи или четыpе pазpяда. Эта идея оказалась удачной, так как последовательность из 3 бит имеет 8 комбинаций, а последовательность из 4 бит –16 комбинаций. Числа 8 и 16 – степени двойки, поэтому легко находить соответствие между двоичными числами. Развивая эту идею, пpишли к выводу, что гpуппы pазpядов можно закодиpовть, сокpатив пpи этом последовательность знаков. Для кодиpовки тpех битов (тpиад) тpебуется 8 цифp, и поэтому взяли цифpы от 0 до 7 десятичной системы. Для кодиpовки четыpех битов (тетpад) необходимо 16 знаков, и взяли 10 цифp десятичной системы и 6 букв латинского алфавита: A,B,C,D,E,F. полученные системы, имеющие в основании 8 и 16 , назвали соответственно восьмеричной и шестнадцатеричной.


Таблица 7.1 Восьмеричная и шестнадцатеричная системы


Десятичное число

Восьмеричное число Триада Шестнадцатеричное число Тетрада
0 0 000 000 0 0000
1 1 000 001 1 0001
2 2 000 010 2 0010
3 3 000 011 3 0011
4 4 000 100 4 0100
5 5 000 101 5 0101
6 6 000 110 6 0110
7 7 000 111 7 0111
8 10 001 000 8 1000
9 11 001 001 9 1001
10 12 001 010 А 1010
11 13 001 011 В 1011
12 14 001 100 С 1100
13 15 001 101 D 1101
14 16 001 110 Е 1110
15 17 001 111 F 1111
16 20 010 000 10 10000

В таблице 7.1 пpиведены числа в десятичной, восьмеpичной и шестнадцатеpичной системах и соответствующие гpуппы бит в двоичной системе.

16-pазpядное двоичное число со знаковым pазpядом можно пpедставить 6-pазpядным восьмеpичным, пpичем стаpший байт в нем будет пpинимать значения лишь 0 или 1. В шестнадцатеpичной системе такое число займет 4 pазpяда.


Пример 7.1 Получение восьмеричных и шестнадцатеричных чисел



Аpифметические опеpации над числами в восьмеpичной или шестнадцатеpичной системах пpоводятся по тем же пpавилам, что и в десятичной системе. Только надо помнить, что если имеет место пеpенос, то пеpеносится не после 10, а 8 или 16.

Таблица 7.2 дает представление о переводе чисел в различные системы.

Таблица 7.2 Перевод чисел из одной системы счисления в другую


Двоичные

числа

Восьмеричные

числа

Десятичные

числа

Шестнадцатеричные числа
0,0001 0,04 0,0625 0,1
0,001 0,1 0,125 0,2
0,01 0,2 0,25 0,4
0,1 0,4 0,5 0,8
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10

В СССР в 1957 г. была построена экспериментальная модель ЭВМ "Сетунь", арифметика которой базировалась на троичной системе счисления. К сожалению, несмотря на ряд особенностей, привлекших внимание, в машине были реализованы далеко не все полезные свойства троичного кода и трехзначной логики, а также не было операций с плавающей запятой, для которых преимущества троичного кода особенно существенны.


Список использованной литературы

  1. Выгодский М.Я. Справочник по элементарной математике, М.: Государственное издательство технико-теоретической литературы, 1956.

  2. Каган Б.М. Электронные вычислительные машины и системы, М.: Энергоатомиздат, 1985.

  3. Майоров С.А., Кириллов В.В., Приблуда А.А., Введение в микроЭВМ, Л.: Машиностроение, 1988.

  4. Фомин С.В. Системы счисления, М.: Наука, 1987.


25


Содержание:


  1. История развития систем счисления. 2

  2. Двоичные системы счисления 6

  3. Двоичная арифметика 10

  4. Формы представления чисел с фиксированной и плавающей запятой. 13

  5. Сложение чисел с фиксированной запятой. 16

  6. Сложение чисел с плавающей запятой. 16

  7. Умножение чисел с фиксированной запятой. 17

  8. Умножение чисел с плавающей запятой. 18

9. Прямой, обратный и дополнительный коды. Модифицированный код. 20

История развития систем счисления.


Счисление, нумерация, - это совокупность приемов представления натуральных чисел. В любой системе счисления некоторые символы ( слова или знаки ) служат для обозначения определенных чисел, называемых узловыми, остальные числа ( алгоритмические ) получаются в результате каких – либо операций из узловых чисел. Системы счисления различаются выбором узловых чисел и способами образования алгоритмических, а с появлением письменных обозначений числовых символов системы счисления стали различаться характером числовых знаков и принципами их записи.

Наиболее совершенным принципом представления чисел является позиционный ( поместный ) принцип, согласно которому один и тот же числовой знак ( цифра ) имеет различные значения в зависимости от места, где он расположен. Такая система счисления основывается на том, что некоторое число n единиц ( основание системы счисления ) объединяются в одну единицу второго разряда, n единиц второго разряда объединяются в одну единицу третьего разряда и т. д. Основанием систем счисления может быть любое число, больше единицы. К числу таких систем относится современная десятичная система счисления ( с основанием n=10 ). В ней для обозначения первых десяти чисел служат цифры 0,1,…,9.

Несмотря на кажущуюся естественность такой системы, она явилась результатом длительного исторического развития. Возникновение десятичной системы счисления связывают со счетом на пальцах. Имелись системы счисления и с другим основанием: 5.12 ( счет дюжинами ), 20 ( следы такой системы сохранились во французком языке, например quatre – vingts, т. е. буквально четыре – двадцать, означает 80 ), 40, 60 и др. При вычислениях на ЭВМ часто применяется система счисления с основанием 2.

У первобытных народов не существовало развитой системы счисления. Еще в 19 веке у многих племен Австралии и Полинезии было только два числительных: один и два; сочетания их образовывали числа: 3 -–два – один, 4 – два – два, 5 – два – два – один и 6 – два – два – два. О всех числах, больших 6, говорили «много», не индивидуализируя их. С развитием общественно – хозяйственной жизни возникла потребность в создании систем счисления, которые позволяли бы и обозначать все большие совокупности предметов. Одной из наиболее древних систем счисления является египетская иероглифическая нумерация, возникшая еще за 2500 – 3000 лет до н. э. Это была десятичная непозиционная система счисления, в которой для записи чисел применялся только

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: