Учебная работа. Реферат: Арифметические основы ЦВМ
В ежедневной практике для представления чисел люди пользуются практически только десятичной системой счисления. Только в редчайших вариантах встречаются остатки остальных систем — римский счет, двенадцатиричная система (часы), шестидесятиричная (минутки).
Но система изображения чисел, которая веками складывалась применительно к ручному труду, не дозволяет получить более действенные способы выполнения вычислений. По данной причине в вычислительной технике используются остальные системы счисления и почаще всего — двоичная.
Введем несколько определений.
Cистема счисления
— совокупа знаков и правил для обозначения чисел.
Делят системы счисления позиционные и непозиционные. Непозиционная система счисления задается перечислением изображаемых в ней значений. Позиционная система счисления характеризуется основанием и тем, что числа, как правило, представляются несколькими разрядами (являются многоразрядными), а вес хоть какого разряда определяется его позицией в числе.
Oснование
позиционной системы счисления описывает количество разных цифр (знаков), допустимое в системе счисления. Это число описывает, во сколько раз вес числа данного разряда меньше веса числа примыкающего старшего разряда.
Так, в десятичной системе счисления, основание которой равно 10, различают 10 арабских цифр — 0, 1, 2, …, 9. Как следует, при ее использовании для записи числа, не превосходящего 9, довольно одной числа, и такое число записывается как одноразрядное. А в случае записи числа, большего 9, оно представляется как многоразрядное. При всем этом вес всякого наиболее старшего (размещенного слева от текущего) разряда в 10 (основание системы счисления) раз больше текущего.
Так, к примеру, число 359 — трехразрядное, и в нем 9 — цифра разряда единиц, 5 — цифра разряда 10-ов, 3 — цифра разряда сотен (в 10 раз превосходит вес разряда 10-ов). При всем этом
Общее правило определения веса разряда многоразрядного числа таково:
Если пронумеровать разряды целого числа справа влево, начиная от 0 для разряда единиц, то вес хоть какого разряда выходит возведением основания системы счисления в степень, значение которой равно номеру разряда.
Так, вес самого младшего разряда целых чисел равен 1, так как номер разряда равен 0, а хоть какое число, в том числе и число 10, возведенное в нулевую степень, дает в итоге единицу. Вес последующего слева разряда равен 10 в степени 1, т.е. равен 10, и т.д.
Это правило справедливо и для записи дробных чисел. При всем этом разрядам справа от разряда единиц, имеющего номер 0, присваиваются отрицательные значения: -1, -2, и т.д., а их веса получаются также при возведении основания 10 в подобающую степень. Так, к примеру, вес третьего разряда в дробной части числа 42,9724 будет равен 10 в степени (-3), т.е. равен одной тысячной.
Обозначенное правило можно проиллюстрировать последующим образом:
Число
7
5
0
6
8
,
2
5
9
Номер разряда
4
3
2
1
0
-1
-2
-3
Вес разряда
10000
1000
100
10
1
0,1
0,01
0,001
Как видно из примера, в позиционной системе счисления довольно знать значение основания системы счисления, знаки, изображающие отдельные числа, и обозначенное правило, чтоб представить хоть какое число.
В вычислительной технике обширно используют двоичную, восьмеричную и шестнадцатиричную систему счисления.
Двоичная система счисления имеет основание 2, и, как следует, две различных числа — 0 и 1; восьмеричная — восемь различных цифр — 0, 1, 2, 3, 4, 5, 6, 7, а шестнадцатиричная — шестнадцать цифр — 10 арабских цифр от 0 до 9 и еще 6 знаков —
А (цифра, изображающая 10), D (цифра тринадцать),
В (цифра одиннадцать), E (цифра четырнадцать),
С (цифра двенадцать), F (цифра пятнадцать).
Проще всего сравнить запись одних и тех же чисел в этих системах счисления можно с внедрением таблицы 1, приведенной на последующей страничке.
Мы уже гласили о том, что современные цифровые ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) все употребляют в качестве главный двоичную систему счисления. К ее плюсам относится:
· простота выполнения арифметических и логических операций, что тянет за собой простоту устройств, реализующих эти операции;
· возможность использования аппарата алгебры логики (булевой алгебры) для анализа и синтеза операционных устройств ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач).
К неудобствам двоичной системы счисления относится необходимость перевода чисел из десятичной в двоичную и напротив, также то, что запись числа в двоичной системе громоздка (просит большего числа разрядов, чем обычная для человека десятичная). По данной и ряду остальных обстоятельств, не считая двоичной используются восьмеричная и шестнадцатиричная системы счисления.
Таблица 1.1
С и с т е м а с ч и с л е н и я
10
2
8
16
0
0
0
0
1
1
1
1
2
0 1
2
2
3
1 1
3
3
4
1 0 0
4
4
5
1 0 1
5
5
6
1 1 0
6
6
7
1 1 1
7
7
8
1 0 0 0
1 0
8
9
1 0 0 1
1 1
9
10
1 0 1 0
1 2
A
11
1 0 1 1
1 3
B
12
1 1 0 0
1 4
C
13
1 1 0 1
1 5
D
14
1 1 1 0
1 6
E
15
1 1 1 1
1 7
F
16
1 0 0 0 0
2 0
1 0
Совместное внедрение обозначенных систем обосновано 2-мя причинами:
· в восьмеричной и шестнадцатиричной системах хоть какое число записывается наиболее компактно, нежели двоичное;
· простотой преобразования из двоичной в восьмеричную (шестнадцатирич-ную) систему счисления и напротив.
Приведем правила перевода чисел из двоичной системы в восьмеричную (шестнадцатиричную) и напротив.
П1 .Правило перевода “8с/с -> 2c/c”
При переводе многоразрядного числа каждую цифру начального восьмеричного числа представить постоянно буквально 3-мя двоичными цифрами, взятыми из приведенной выше таблицы. При всем этом, если для записи соответственной восьмеричной числа в виде двоичной требуется наименее 3-х двоичных цифр, двоичный эквивалент дополняется слева нулями (незначащие нули не исказят значения числа). Таковым образом, к примеру, при записи четырехразрядного восьмеричного числа обязано получиться двенадцатиразрядное двоичное. Опосля окончания такового преобразования можно откинуть старшие для всего числа незначащие двоичные числа.
Отметим, что три числа принято именовать триадой
. Потому можно сказать, что при описываемом переводе любая восьмеричная цифра заменяется соответственной ей триадой двоичных цифр.
Если начальное число дробное, т.е. имеет целую и дробную часть, то в двоичном числе запятая ставится меж триадами, представляющими надлежащие числа начального числа.
Пример.
Преобразуем восьмеричное число 371,62.
Для этого запишем для каждой числа подобающую триаду:
3 —> 011
7 —> 111
1 —> 001
6 —> 110
2 —> 010
сейчас можно записать число в двоичной форме (для наглядности меж триадами поместим пробелы):
371,62 -> 011 111 001 , 110 010
И, в конце концов, запишем приобретенное двоичное число так, как это принято в арифметике, без незначащих нулей, также отбросив правые нули в дробной части числа:
371,62 -> 11111001,11001
П2. Правило перевода “2с/с -> 8c/c”
При переводе многоразрядного двоичного числа в восьмеричную форму поступают последующим образом: Начальное число разбивают на триады. При всем этом для целой части числа разбиение проводят от местопребывания запятой на лево, а для дробной части — от этого же места на Право. Потом самая левая группа по мере необходимости дополняется незначащими нулями до образования триады, а самая правая группа лишь в дробной части дополняется нулями справа также до образования полной триады. Опосля этого любая триада заменяется соответственной восьмеричной цифрой. Положение запятой сохраняется по этим же правилам, что и в правиле П1.
Пример.
Представить двоичное число 1101100,01111101 в форме восьмеричного.
Разобьем начальное число на группы по три числа, приняв в качестве точки отсчета положение запятой (для наглядности меж триадами поместим пробелы):
1 101 100 , 011 111 01
сейчас дополним до 3-х цифр нулями самую левую группу слева и самую правую группу справа:
001 101 100 , 011 111 010
И, в конце концов, заменим каждую триаду соответственной восьмеричной цифрой:
001 101 100 , 011 111 100 —> 154,372
П3. правило перевода “16с/с -> 2c/c”
При переводе многоразрядного шестнадцатиричного числа в двоичную форму каждую цифру начального числа подменяют группой буквально из 4 двоичных цифр (подменяют тетрадой
двоичных цифр). Положение запятой сохраняется по этим же правилам, что и в правиле П1. В конечной записи можно откинуть самые левые (незначащие) нули и самые правые нули дробной части.
Пример. Конвертировать шестнадцатиричное число “6C,7D” в двоичную форму.
Для этого запишем для каждой числа подобающую тетраду:
6 —> 0110
C —> 1100
7 —> 0111
D —> 1101
сейчас можно записать число в двоичной форме (для наглядности меж тетрадами поместим пробелы):
6C,7D -> 0110 1100 , 0111 1101
И, в конце концов, запишем приобретенное двоичное число так, как это принято в арифметике, без незначащих нулей:
6C,7D -> 1101100,01111101
П4. правило перевода “2с/с -> 16c/c”
При переводе многоразрядного двоичного числа в шестнадцатиричную форму поступают последующим образом. Начальное число разбивают на тетрады. При всем этом для целой части числа разбиение проводят от местопребывания запятой на лево, а для дробной части от этого же места на Право. Потом самая левая группа по мере необходимости дополняется незначащими нулями до образования тетрады, а самая правая группа лишь в дробной части дополняется нулями справа также до образования полной тетрады. Опосля этого любая тетрада заменяется соответственной шестнадцатиричной цифрой. Положение запятой сохраняется по этим же правилам, что и в правиле П1.
Пример. Представить двоичное число 1101100,01111101 в форме шест-надцатиричного.
Разобьем начальное число на группы по четыре числа, приняв в качестве точки отсчета положение запятой (для наглядности меж тетрадами поместим пробелы):
110 1100 , 0111 1101
сейчас дополним до 4 цифр нулями слева самую левую группу:
0110 1100 , 0111 1101
И, в конце концов, заменим каждую тетраду соответственной шестнадцатиричной цифрой:
0110 1100 , 0111 1101 -> 6С,7D.
Шестнадцатиричная и восьмеричная системы счисления употребляются для наиболее малогабаритной и комфортной записи двоичных чисел.
Так, известность шестнадцатиричной системе принесло то, что с ее внедрением комфортно представлять программки в кодах большинства современных ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач).
1.2. Перевод чисел из одной системы счисления
в другую
Так как в практической деятель люди привыкли оперировать десятичной системой счисления, а в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) числа представляются в двоичной, нужно научиться преобразовывать числа из одной системы счисления в другую. Рассмотренные выше правила перевода из двоичной системы счисления в восьмеричную и шестнадцатиричную и напротив носят личный нрав и не могут быть всераспространены на остальные системы. Тут же мы разглядим общие правила перевода, справедливые для хоть какой пары систем счисления, хотя и наиболее массивные и трудозатратные по сопоставлению с рассмотренными выше.
Правила перевода целых и дробных чисел не совпадают, потому приведем три правила перевода чисел из системы счисления с основанием R в систему счисления с основанием Q.
правило 1. Перевод целых чисел
Для перевода целого числа N, представленного в системе счисления (с/с) с основанием R, в с/с с основанием Q нужно данное число разделять на основание Q по правилам с/с с основанием R до получения целого остатка, наименьшего Q. Приобретенное личное опять нужно разделять на основание Q до получения новейшего целого остатка, наименьшего Q, и т.д., до того времени, пока крайнее личное будет меньше Q. Число N в с/с с основанием Q представится в виде не упорядоченной последовательности остатков деления в порядке, оборотном их получению (другими словами, старшую цифру числа N дает крайнее личное).
Пример. Конвертировать десятичное число 67 в двоичную форму.
Основание начальной системы счисления R=107. Основание новейшей системы счисления Q=2.
Согласно приведенному правилу нужно начальное число 67 разделять на основание новейшей системы (на 2) по правилам десятичной системы счисления (начальная с/с).
Так как процесс деления на 2 весьма прост, воспользуемся последующим приемом: в левом столбце будем писать текущие личные, а в правом — текущие остатки от их деления на 2 (это быть может или 0, или 1):
67 1 При делении 67 на 2 выходит личное 33 и остаток 1;
33 1 при делении 33 — личное 16 и остаток 1 и т.д.
16 0
8 0
4 0
2 0
1 1 <- Старшая цифра числа.
0
сейчас можно записать число 67 в новейшей системе счисления. Оно равно 1000011.
правило 2. Перевод правильной дроби
Перевод правильной дроби, представленной в с/с с основанием R, в с/с с основанием Q заключается в поочередном умножении данной дроби на основание Q по правилам системы счисления с основанием R, при этом перемножают лишь дробные части. Дробь N в с/с с основанием Q представляется в виде упорядоченной последовательности целых частей произведений в порядке их получения. (Другими словами, старший разряд является первой цифрой произведения). количество поочередных произведений описывает количество цифр в приобретенном числе.
Для почти всех чисел обозначенный процесс умножения потенциально никогда не кончается. Потому он длится до того времени, пока не будет получено нужное число цифр дробной части. При переводе числа с целью представления ее в “машинной” форме можно буквально указать требуемое количество цифр. (Это будет рассматриваться позднее, в разделе 1.5).
Пример. Перевести в двоичную систему счисления десятичную дробь 0,7243.
Основание начальной системы счисления R=10. Основание новейшей системы счисления Q=2.
Согласно приведенного правила начальное число 0,7243 нужно множить на основание новейшей системы (на 2) по правилам десятичной системы счисления (начальная с/с). Выполним серию умножений до получения, к примеру, 6 цифр в двоичном числе:
Разыскиваемые числа дроби:
0,7243 * 2 = 1
,4486 1 -> старшая цифра
0,4486 * 2 = 0
,8972 0
0,8942 * 2 = 1
,7944 1
0,7944 * 2 = 1
,5888 1
0,5888 * 2 = 1
,1776 1
0,1776 * 2 = 0
,3552 0
0,3552 * 2 = 0
,7104 0
Разыскиваемое внимание, что для получения 6 цифр дроби выполнено семь умножений
Это соединено с необходимостью выполнить округление, чтоб представить дробь данной длины наиболее буквально.
Из крайнего примера, конечная дробь в одной системе счисления может стать нескончаемой в иной. Это утверждение справедливо для всех случаев, когда одна система счисления не быть может получена возведением в целую степень основания иной.
Примеры.
· Десятичная дробь 0,2
представляется нескончаемой дробью 0,33333…
в шестнадцатиричной системе счисления (основания с/с 10 и 16).
· Шестнадцатиричная дробь 0,В1
представляется конечной дробью 0,10110001
в двоичной системе счисления (основания с/с 16 и 2).
правило 3. Перевод неверной дроби
Перевод неверной дроби из одной системы счисления в другую осуществляется раздельно для целой и дробной части по правилам, изложенным выше.
1.3. Двоичные коды для десятичных цифр
В ряде всевозможных случаев в вычислительной технике применяется не только лишь двоичная, да и десятичная система счисления. Но и в этом случае для представления десятичных цифр употребляется оборудование, разработанное для представления двоичных цифр. В этом случае молвят о двоично-десятичных кодах десятичных цифр.
Согласно формулы Хартли для представления 10 разных цифр требуется четыре бита инфы:
3 бита < I = log(10) < 4 бита.
Таковым образом, по мере необходимости представить 10 различных десятичных цифр комбинациями двоичных цифр, каждую из их можно представить минимум тетрадой двоичных чисел. Большая часть кодов десятичных цифр употребляет тетрады, хотя есть и коды, в каких для кодировки употребляется большее число битов.
Более всераспространены двоично-десятичные коды, в каких для представления десятичных цифр употребляются позиционные способы кодировки. Так, если разглядывать четыре двоичных разряда тетрады как четырехразрядное двоичное число, то веса ее отдельных разрядов слева вправо будут равны соответственно 8, 4, 2 и 1.
Потому 1-ый двоично-десятичный код, который мы разглядим, обозначается как код “8421”. Его можно именовать кодом с естественными весами.
В этом коде любая десятичная цифра представляется ее двоичным эквивалентом :
цифра 0 как 0000,
цифра 1 как 0001,
цифра 2 как 0010,
цифра 5 как 0101,
цифра 8 как 1000,
цифра 9 как 1001.
В то же время, имея четыре двоичных числа, можно представить не 10, а 16 разных композиций. Таковым образом, при использовании кода “8421” 6 композиций : 1010, 1011, …, 1111 останутся неиспользованными, т.е. не будут изображать ни одной из десятичных цифр. Эти композиции числятся нелегальными.
а) Коды с излишком
Не считая рассмотренной системы кодировки довольно обширно употребляются также так именуемые коды с излишком. Разглядим группу кодов “8421” с излишком”.
Код “8421” с излишком W” строится по последующим правилам:
При кодировке десятичной числа, к ней сначала добавляют W, и потом приобретенное число представляют как двоичное в коде “8421”.
значения будут различными.
Пример. Разглядим код “8421” с излишком 3”.
а)Представим цифру 8 в данном коде.
Сначала увеличим 8 на 3. Получится 11.
Потом запишем 11 в коде “8421”. Получится 1011.
Число 1011 и есть к примеру, композиции 0100 и 0010 изображают цифру 2, композиции 1010 и 0100 изображают цифру 4 и т.д. Отличительной индивидуальностью данного кода будет то, что в нем нет неиспользованных (нелегальных) композиций.
в) Код “2 из 5”
Данный код принадлежит к непозиционным кодам. Как и все непозиционные коды он определяется табличным методом. Его заглавие отражает принцип построения кода: неважно какая десятичная цифра представляется композицией из 5 двоичных цифр, в какой буквально две числа 1 и, как следует, три числа 0.
Представим таблицу 1-го из вероятных вариантов для данного кода:
Цифра
Код
Цифра
Код
0
11000
5
01010
1
00011
6
01100
2
00101
7
10001
3
00110
8
10010
4
01001
9
10100
Все другие вероятные композиции, в каких число единиц не равно двум, являются нелегальными.
Также как и все коды на базе тетрады “8421”, крайний код принадлежит к группе кодов, владеющих так именуемыми диагностическими способностями: Если понятно, что некая композиция обязана изображать десятичную цифру, но попадает в область нелегальных, означает вышло искажение инфы. Это свойство кодов интенсивно употребляется в аппаратуре ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач).
Для закрепления материала по переводу чисел из одной системы счисления в другую выполним несколько примеров.
Пример 1. Представить десятичное число 581 в двоичной, восьмеричной и шестнадцатиричной системах счисления.
Задачку можно решить с минимальными затратами усилий, выполнив, к примеру, перевод в двоичную с/с по общепринятому правилу (т. е. делением на основание 2 по правилам десятичной системы счисления), а потом из двоичной в восьми- и шестнадцатиричную системы счисления, используя облегченные правила (кодировкой соответственно тетрад и триад).
Пример 2. Представить десятичное число 993,761 в двоичной и шестнадцатиричной системах счисления.
Задачку можно решить таковым же образом, как и предшествующую.
Пример 3. Представить шестнадцатиричное число 8363 в десятичной системе счисления.
Воспользуемся общим правилом. Для этого нужно начальное число разделять на 10 по правилам шестнадцатиричной системы счисления.
Что все-таки это за правила? Это такие же правила сложения, вычитания, умножения и деления, что и в десятичной с/с, но над числами в позиционной шестнадцатиричной с/с.
Выполним перевод:
8 3 6 3
A
_(131)
(130) D 2 3
A
——- A
1 6 —- 1 5 0
A
_ (22) 3 2 _(21)
(20) _(50) (20) 2 1
A
—— (50) —— _(33)
2 3 —— 1 0 (30) 3
_(35) 0 3
_ (16) ——
(30) (10) 3
—— ——
5
6
Разыскиваемое число в десятичной системе равно 33635.
Примечание. В круглых скобках записаны десятичные эквиваленты соответственных шестнадцатиричных чисел. При всем этом в каждой паре чисел, расположенных друг под другом, 1-ое число — частичное делимое, а 2-ое — произведение делителя на частичное личное. Так запись (131) — эквивалент шестнадцатиричного делимого 83, а (130) — итог умножения делителя А (=10) на D (13).
1.4. Математика цифровых вычислительных машин
Как уже говорилось выше, фактически все современные цифровые ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) в качестве главный употребляют двоичную систему счисления. А все арифметические операции над двоичными числами можно свести к двум простым — сложению и сдвигу двоичных кодов, изображающих числа. Это дозволит на техническом уровне воплотить четыре деяния математики в одном устройстве, именуемом арифметико-логическом (АЛУ), используя одни и те же электронные схемы.
1.4.1. машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) используют прямой, оборотный и доп коды.
Как уже говорилось выше, кодом именуют такую запись числа, которая различается от естественной и принятой. Итак вот, в арифметике естественной формой записи числа является запись, при которой конкретно перед старшей означающей цифрой числа помещается символ плюс(+) либо минус(-), а длина записи определяется величиной числа (по другому, количество знаков, использованных для записи различных чисел, как правило, не совпадает). В ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) это не так. одной из важных черт хоть какой ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) является длина слова в ней. Длина слова определяется количеством двоичных разрядов слова.
Потому в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), вне зависимости от величины числа, его код постоянно имеет фиксированное количество двоичных цифр.
Не считая этого, в двоичном алфавите нет никаких знаков, не считая цифр 0 и 1, и нужны новейшие правила для указания знака числа. Сущность этих правил сводится к тому, что символ плюс изображается цифрой 0, символ минус — цифрой 1, а цифра, изображающая символ постоянно записывается самой первой в записи числа.
Обратите внимание, что код числа постоянно содержит изображение его знака
, в отличие от математической записи, которая дозволяет опускать символ плюс при изображении положительного числа.
Так, код 011101, согласно сиим правилам, изображает положительное (самая левая цифра — 0) двоичное число 11101.
Для того, чтоб наиболее просто, и, как следует, наиболее экономно воплотить устройство АЛУ используют несколько различных кодов чисел. Это соединено с тем, что различные операции в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) наиболее просто реализуются в различных кодах.
При выполнении арифметических операций в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) используют прямой, оборотный
и доп
коды чисел.
Прямой код
двоичного числа — это само двоичное число, в каком все числа, изображающие его
При всем этом никакого знака, отделяющего эту цифру от старшей числа, применяемой при изображении его величины, не допускается. В таковых вариантах молвят о том, что предназначение числа в коде определяется его позицией.
Примеры.
Изображаемое число Код
· +1101 (+13) 0000 1101 ( В примерах коды )
· +1011101 (+93) 0101 1101 ( изображаются )
· 1101 (-13) 1000 1101 ( восемью цифрами )
Итак, прямой код практически не различается от принятого в арифметике: для выявления абсолютной величины (модуля) числа, нужно откинуть цифру, обозначающую его символ.
Но применительно к операциям сложения и вычитания таковой код неудобен: правила счета для положительных и отрицательных чисел различаются. Чтоб прояснить это событие, представим что длина кода (слова) равна 5 двоичным разрядам и запишем несколько чисел в нем:
Число
-2
-1
0
+1
+2
Код
10010
10001
00000
00001
00010
Как видно из примера, при использовании прямого кода при переходе значения число через ноль, происходит скачкообразное изменение кода!
Потому построение устройства, в каком должны производиться такие деяния математики, как сложение чисел с различными знаками и вычитание, становится сложной задачей.
Прямой код употребляется при хранении чисел в памяти ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), также при выполнении операций умножения и деления.
Чтоб выстроить наиболее обыкновенные схемы АЛУ предложены и интенсивно используются оборотный и доп коды.
Оборотный код
положительного числа совпадает с прямым, а при записи отрицательного числа все его числа, не считая числа, изображающей символ числа, заменяются на обратные ( 0 заменяется на 1, а 1 — на 0).
Примеры записи.
Изображаемое число Код
· +1101 (+13) 0000 1101 ( В примерах коды )
· +1011101 (+93) 0101 1101 ( изображаются )
· 1101 (-13) 1111 0010 ( восемью цифрами )
Сравнение данной записи с прямым кодом указывает, что конкретно вернуть абсолютную величину (модуль) отрицательного числа тяжело. Но, в этом коде как к положительным, так и к отрицательным числам можно использовать одни и те же правила, а операцию А-В можно поменять операцией сложения чисел А и “минус В”.
Поглядим, как представляется поочередные числа при переходе через ноль:
Число
-2
-1
0
+1
+2
Код
11101
11110
00000
00001
00010
Из примера видно, что переход через ноль также не смотрится естественным. Отмеченная изюминка тянет за собой и последующее — в оборотном коде ноль изображают две различающиеся композиции: 00000 (+0) и 11111 (-0), что усложняет аппаратную реализацию операций.
Для восстановления прямого кода отрицательного числа из оборотного кода нужно все числа, не считая числа, изображающей символ числа, поменять на обратные.
Доп код
положительного числа совпадает с прямым, а код отрицательного числа появляется как итог роста на 1 его оборотного кода.
Другими словами, процесс построения доп кода отрицательного числа можно разбить на два шага — выстроить оборотный код, а потом из него выстроить доп.
Проиллюстрируем это на примере.
Число -> — 101101
Прямой код -> 1101101
Оборотный код -> 1010010
+1
Доп -> 1010011
Примеры записи.
Изображаемое число Код
· +1101 (+13) 0000 1101 ( В примерах коды )
· +1011101 (+93) 0101 1101 ( изображаются )
· 1101 (-13) 1111 0011 ( восемью цифрами )
В доп коде, в отличие от оборотного, ноль изображается лишь одной композицией, и не считая этого, довольно естественно выходит переход через ноль, если подразумевать, что хоть какое число, большее другого на 1, выходит при прибавлении к этому другому 1 по правилам сложения. Применительно к доп коду это конкретно так, если принять к сведению, что разрядность слова фиксирована, и единица переноса из старшего разряда пропадает, так как ее некуда записать:
2 -> 11101 + 1 = 11110
1 -> 11110 + 1 = 11111
0 -> 11111 + 1 = (1)00000 (перенос отбрасывается)
+1 -> 00000 + 1 = 00001
+2 -> 00001 + 1 = 00010
Для восстановления прямого кода числа из доп необходимо вполне повторить (и конкретно в том же порядке!) деяния, которые использовались при переводе из прямого в доп код: поначалу все числа, не считая числа, изображающей символ, поменять на обратные, а потом прибавить 1.
Главным достоинством доп кода будет то, что в нем единообразно реализуются операции сложения чисел различных символов (алгебраическое сложение), а операцию вычитания можно свести к операции сложения подменой знака вычитаемого на оборотный. Вспомнив, что в памяти ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) числа хранятся в прямом коде, станет ясно, что подмена знака вычитаемого быть может выполнена очень просто (подменой знака числа в прямом коде на оборотный). Конкретно по обозначенной причине доп код применяется почаще оборотного.
1.4.2. Сложение и вычитание чисел
Сложение и вычитание чисел в оборотном и доп кодах производится с внедрением обыденного правила арифметического сложения многоразрядных чисел. Общей для этих кодов индивидуальностью (и весьма комфортной индивидуальностью) является только то, что при поразрядном сложении чисел разряды, изображающие знаки чисел рассматриваются как равноправные разряды двоичного числа, которые складываются друг с другом и с единицей переноса из предшествующего разряда числа по обыденным правилам математики. Различия же оборотного и доп кодов соединены с тем, что делается с единицей переноса из старшего разряда (изображающего, как не один раз говорилось, символ числа).
При сложении чисел в доп коде единица переноса из старшего разряда игнорируется (пропадает), а в оборотном коде эту единицу нужно прибавить к младшему уровню результата.
Пример 1. Сложить числа +12 и -5.
а) В оборотном коде
Десятичная форма -> +12 -5
Двоичная форма -> +1100 -101
Прямой код -> 00001100 10000101
Оборотный код -> 00001100 11111010
Выполним сложение в столбик:
0 0 0 0 1 1 0 0
1 1 1 1 1 0 1 0
===============
(1) 0 0 0 0 0 1 1 0
+ 1 (Добавление 1 переноса)
==============
0 0 0 0 0 1 1 1
Итак, итог в оборотном коде = 00000111.
Так как знаковый разряд равен 0, итог положительный, и, как следует, запись кода числа совпадает с записью прямого кода. сейчас можно вернуть алгебраическую запись результата. Он равен +111 (незначащие нули отброшены), либо в десятичной форме +7.
Проверка (+12-5=+7) указывает, что итог верный.
а) В доп коде
Десятичная форма -> +12 -5
Двоичная форма -> +1100 -101
Прямой код -> 00001100 10000101
Оборотный код -> 00001100 11111010
+1
Доп код -> 00001100 11111011
Выполним сложение в столбик:
0 0 0 0 1 1 0 0
1 1 1 1 1 0 1 1
============
(1) 0 0 0 0 0 1 1 1
(Перенос игнорируется)
Итак, итог в доп коде = 00000111.
Так как знаковый разряд равен 0, итог положительный, и, как следует, запись кода числа совпадает с записью прямого кода. сейчас можно вернуть алгебраическую запись результата. Он равен +111 (незначащие нули отброшены), либо в десятичной форме +7.
Проверка (+12-5=+7) указывает, что итог верный.
Умножение и деление двоичных чисел делается в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) в прямом коде, а знаки их употребляются только для определения знака результата. Также как и в арифметике, умножение сводится к операциям сложения и сдвига. Деление производится за счет комбинирования сдвигов, вычитаний (в этот момент могут употребляться оборотный либо доп коды) и сложений.
1.5. Кодирование чисел в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач)
В ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) применяется почаще всего одна из 2-ух форм представления чисел:
· с фиксированной запятой;
· с плавающей запятой.
Числа представляются в машинном слове, имеющем для определенной ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) постоянно фиксированное число разрядов (битов). Это число является одной из важных черт хоть какой ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) и именуется разрядностью машинки. Различные разряды слова при кодировке установок и данных имеют несовпадающие многофункциональные предназначения. При рассмотрении их функций употребляют также термин “разрядная сетка машинки”.
1.5.1. Числа с фиксированной запятой
В числах с фиксированной запятой положение запятой в разрядной сетке машинки заблаговременно обосновано для всех чисел раз и навечно. Потому в коде числа запятая никак не обозначается. В большинстве машин пространство запятой предполагается опосля крайней числа (справа от нее). А такие числа — целые. По мере необходимости представлять дробные числа с внедрением формы с фиксированной запятой программер должен алгоритмическими средствами обеспечить внедрение множителя, выполняющего функцию масштабирования (масштабного множителя).
Определим спектр представимых чисел.
Сначала разглядим пример, в каком положим, что мы имеем дело с десятичной
(а не двоичной) системой счисления, и что для записи абсолютной величины числа (без учета его знака) в нашем распоряжении имеется 6 разрядов.
Тогда наибольшее (по абсолютной величине) целое будет равно 999999 либо по другому 10**6-1. А так как в разрядной сетке машинки для записи знака числа постоянно предусматривается один разряд, то для нашего варианта спектр представимых чисел составит все целые числа, начиная от
-999999 до +999999, а количество разных целых — 2*10**6-1.
В двоичных ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) их разрядность определяется числом разрядов в слове. Так, если разрядность некой ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) равна 16, то один разряд отводится для кодировки знака числа, а другие 15 — для записи его величины. При всем этом наибольшее по модулю целое integer
) чисел в языке программирования Паскаль для ПЭВМ типа IMB PC).
В общем случае, если разрядность машинки составляет N битов. Тогда наибольшее по абсолютной величине целое число, которое можно в ней записать, будет равно 2**(N-1)-1.
Индивидуальности арифметических операций над числами
Так как (если положение запятой фиксировано опосля крайней числа числа) числа с фиксированной запятой — целые, они представляются в машине буквально. А поэтому операции сложения, вычитания и умножения корректны постоянно: как операнды, так и итог — целые числа.
Единственной индивидуальностью, о которой нужно упомянуть, является ситуация, которая носит заглавие “переполнение разрядной сетки” (FixedOverflow — переполнение с фиксированной запятой) и которая возникает, когда итог умножения превосходит очень вероятное для данной разрядности (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) исключительной. При ее появлении записать получившееся бит результата (бит переноса из старшего разряда слова) пропадает, а в качестве результата выдается искаженное число. Описываемая ситуация не считается критичной, и опосля окончания данной операции вычисления длятся. Таковым образом, программер сам должен позаботиться о корректной реакции на появление переполнения, используя для обнаружения обозначенной ситуации содержимое флага переполнения.
По другому обстоит дело с операцией деления. При делении целого числа на другое целое итог совершенно не непременно должен быть целым. А так как и итог должен быть представлен целым числом, возникает коллизия, которую проиллюстрируем примером:
5 / 2 = 2
5 / 3 = 1
5 / 4 = 1
5 / 5 = 1
5 / 6 = 0
И в отличие от умножения, с позиций ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) никаких ошибок при всем этом нет, и никакие флаги не инсталлируются, а обозначенные индивидуальности деления целых должны учитываться программером без помощи других. В ряде языков программирования эти индивидуальности отражаются набором допустимых арифметических операций. Так, к примеру, в языке Паскаль для целых (integer) определены две операции:
div
— целочисленное деление, при котором в качестве результата представляется целая часть личного,
mod
— остаток от деления целых (деление по модулю), при котором в качестве результата представляется целый остаток от деления, по абсолютной величине наименьший делителя.
Примеры:
5 div
3 = 1
5 mod
3 = 2
1.5.2. Числа с плавающей запятой
В форме с плавающей запятой число представляется 2-мя компонентами : мантиссой и порядком. Мантисса употребляется для записи цифр числа, а порядок — для указания положения запятой.
Разрядная сетка машинки в этом случае делится на несколько частей:
один разряд
— для кодировки знака числа (это постоянно самый старший, левый, разряд слова);
M разрядов
— для записи мантиссы;
Р разрядов
— для записи порядка (с учетом его знака).
Положение запятой при всем этом тоже строго фиксируется: считается, что мантисса постоянно представляется как число, наименьшее единицы, но такое, в каком 1-ая цифра опосля запятой для всех полностью чисел отлична от нуля (единственное исключение составляет число 0). Таковая форма представления мантиссы именуется нормализованной. По другому молвят, что мантисса нормализована (приведена к виду: 1 < M <= 0,1).
Ну, а если понятно, что мантисса имеет вид “0,цццц..”, то ее код в машинном слове может не содержать знаков “0,”, а положение запятой предполагается перед старшей означающей цифрой мантиссы.
порядок Р постоянно представляется целым числом со знаком + либо -. А для кодировки абсолютной величины порядка остается (Р-1) цифр.
сейчас можно разглядеть спектр представимых чисел.
Сначала разглядим пример применительно к двоичной системе счисления.
Пусть m
— количество разрядов мантиссы,
р
— количество разрядов порядка, включая знаковый.
Тогда наибольшее по абсолютной величине число будет равно
0,1111..1
* 2**(+111..1
) = (1-2**(-м
))*2**(2**(р
-1)-1),
m
цифр (p
-1) цифр
либо примерно 2**(2**(р
-1)-1),
а малое по абсолютной величине число
0,1000..0
* 2**(-111..1
) = 2**(-2**(р
-1)).
m
цифр (p
-1) цифр
Итак, число в форме с плавающей запятой представляется последовательностью битов без каких или очевидно обозначенных разделителей, но функционально разбитой на три группы {(символ числа, мантисса числа, порядок числа) либо (символ числа, порядок числа, мантисса числа)}.
Рассмотренная форма кодировки числа приводит к последующим последствиям:
· Спектр чисел, представимых в форме с плавающей запятой, определяется основным образом разрядностью порядка (Р).
· Разрядность мантиссы (М) описывает четкое количество означающих цифр в изображении числа.
Как следует, большая часть чисел в форме с плавающей запятой представляется приближенно и предпосылкой этого является ограниченное число разрядов мантиссы. Величина же абсолютной погрешности при приближенном представлении числа зависит как от абсолютной величины числа, так и от разрядности мантиссы и порядка.
Разглядим примеры. При всем этом для простоты положим, что числа представляются в десятичной системе счисления, количество цифр мантиссы равно 4, количество цифр порядка — 2, символ порядка записывается как в арифметике, а символ числа мы не изображаем, полагая все числа положительными.
Пример 1. Пусть имеется число 12,42=0,1242*10**(+2).
В данном формате оно представляется цепочкой знаков
1 2 4 2 + 0 2
При всем этом
· цепочка “1 2 4 2” представляет мантиссу, т.е. в математическом смысле число 0,1242 ,
· а цепочка “+ 0 2” — порядок — целое положительное число 2.
Тогда наиблежайшее большее этого число быть может задано цепочкой
1 2 4 3 + 0 2
и оно равно 0,1243*10**(+2)= 12,43.
Таковым образом, наиблежайшие числа на числовой оси, которые различимы при кодировке их в форме с плавающей запятой для данного примера различаются на 0,01 (абсолютная погрешность представления всех чисел меж 12,42 и 12,43 имеет верхнюю оценку 0,01).
Пример 2. Пусть имеется число 0,001242=0,1242*10**(-2).
В данном формате оно представляется цепочкой знаков
1 2 4 2 — 0 2
,
а наиблежайшее большее этого число представляется цепочкой
1 2 4 3 — 0 2
и равно 0,1243*10**(-2)= 0,001243.
Таковым образом, абсолютная погрешность представления всех чисел меж 0,001242 и 0,001243 имеет верхнюю оценку 0,000001.
Пример 3. Пусть имеется число 0,1242*10**(+12).
В естественной форме записи это число 124 200 000 000, а в данном формате оно представляется цепочкой знаков
1 2 4 2 + 1 2
,
а наиблежайшее большее этого число представляется цепочкой
1 2 4 3 + 1 2
и равно 0,1243*10**(+12)= 124 300 000 000.
Таковым образом, абсолютная погрешность представления всех чисел меж 124 200 000 000 и 124 300 000 000 имеет верхнюю оценку 100 000 000 = 10**8.
Обратите внимание, что в крайнем примере нереально записать ни 1-го числа в интервале размером 10**8.
Принципиальный вывод, который следует из анализа формы кодировки чисел с плавающей запятой и иллюстрируется в рассмотренных примерах: числа в форме с плавающей запятой, невзирая на то что, эта форма предложена для представления в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) непрерывных величин, представляются дискретным обилием на числовой оси и размещаются на ней неравномерно.
Если изобразить на (нескончаемой) числовой оси области существования чисел, то можно выделить последующие области (см. рис.):
1 2 3 4 5 6
R
МаксВещ -МинВещ 0 +МинВещ +МаксВещ
· область 1: Х<-МаксВещ
— ни 1-го значения из области недозволено представить в машинном слове (МаксВещ
— наибольшее по абсолютной величине число, которое можно закодировать);
· область 2: —МаксВещ
<=X<=-МинВещ
— в данном интервале быть может представлено столько разных чисел, сколько их можно записать по данной разрядности мантиссы и порядка;
· область 3: -МинВещ
<X<0
— ни 1-го значения из данной области представить в машинном слове недозволено;
· область 4: 0
<X<+МинВещ
— ни 1-го значения из данной области представить в машинном слове недозволено;
· область 5: +МинВещ
>=X>=+МаксВещ
— в данном интервале быть может представлено столько разных чисел, сколько их можно записать по данной разрядности мантиссы и порядка;
· область 6: X>+МаксВещ
— ни 1-го значения из области недозволено представить в машинном слове (МаксВещ — наибольшее по абсолютной величине число, которое можно закодировать).
Особенное пространство занимает величина 0
. Она также кодируется в форме с плавающей запятой, при этом как ее порядок, так и мантисса(!) полагаются равными нулю.
Индивидуальности арифметических операций над числами
При выполнении арифметических операций все четыре деяния математики корректны. Следует но подразумевать, что дискретный нрав представления чисел в форме с плавающей запятой и разбиение числовой оси на области, в ряде из которых нереально представить ни 1-го числа, приводит:
· Во-1-х, к тому, что при выполнении арифметической операции на теоретическом уровне может быть формирование результата, который попадает в области 2 либо 5, но который недозволено закодировать в форме с плавающей запятой буквально. В этом случае, итог заменяется наиблежайшим из огромного количества допустимых значений с учетом правила округления (ошибка способа представления чисел, вызванная ограниченной разрядностью мантиссы).
· Во-2-х, к тому, что при выполнении арифметической операции на теоретическом уровне может быть формирование результата, который попадает в область 1 либо в область 6. Этот вариант является критичным, так как итог представить недозволено принципно. Рассматриваемая ситуация именуется “Переполнение с плавающей запятой” (Overflow), а при ее появлении происходит аппаратное прерывание работы ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) и выполнение программки аварийно прекращается. Предпосылкой этого является ограниченная разрядность порядка.
· В-3-х, к тому, что при выполнении арифметической операции на теоретическом уровне может быть формирование результата, который попадает в область 3 либо в область 4. Рассматриваемая ситуация именуется “Утрата значимости”, а при ее появлении итог заменяется наиблежайшим допустимым, как правило нулем. Выполнение программки опосля этого длится. В неких ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) при данной ситуации вырабатывается предупредительное (информационное) сообщение. Предпосылкой данной ситуации также является ограниченная разрядность порядка.
В заключении отметим, что при выполнении арифметических операций мантиссы чисел и их порядки обрабатываются по различным методам. При всем этом в операциях сложения и вычитания чисел порядки выравниваются за счет сдвига мантиссы наименьшего операнда на число разрядов, равное разнице порядков операндов, а в операциях умножения и деления порядки чисел соответственно складывают либо вычитают. Так как, как мы уже лицезрели ранее, вычитание алгебраических чисел (т.е. с учетом их символов) в прямом коде воплотить не попросту, а порядки представляются как числа целые со знаком в прямом коде, в ряде ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач) при представлении числа с плавающей запятой порядок числа заменяется его чертой.
Черта числа выходит из его порядка, если выполнить преобразование координат: —МаксПорядок
:
порядок:
МаксПорядок 0 +МаксПорядок
Черта:
0 МаксХаракт
.
При всем этом черта числа рассматривается лишь как положительное число, а как следует, в нем не нужно и кодировать символ. Признаком же того, какой символ имеет порядок некого числа, является содержимое старшего разряда свойства: Если он равен 0 — порядок отрицательный, в неприятном случае — порядок положительный. В случае записи свойства цепочкой цифр 1000..0 принимается, что порядок равен нулю.
Разглядим еще одну ситуацию, типичную для операции над числами в форме с плавающей запятой.
Пусть нужно вычислить разницу чисел
X
=13,45 и Y
=13,45*10**(-5) ,
при условии, что они представлены в форме с плавающей запятой при разрядности мантиссы, равной 4, и порядка, равной 2. Для простоты операцию проиллюстрируем на примере десятичной системы счисления.
Запишем числа Х и Y в форме с плавающей запятой:
X
: 1 3 4 5 + 0 2
Y:
1 3 4 5 — 0 3
Как видно из данной записи, оба числа представлены в форме с плавающей запятой без преломления. Не воспроизводя логику вычитания, принятую в ЭВМ (Электронная вычислительная машина — комплекс технических средств, предназначенных для автоматической обработки информации в процессе решения вычислительных и информационных задач), выполним вычитание в столбик. Для этого представим оба операнда в естественной форме и так, чтоб надлежащие разряды операндов находились друг под другом :
X
: 1 3 , 4 5
Y
: 0 , 0 0 1 3 4 5
=============
X-Y
: 1 3 , 4 4 8 6 5 5
Округлим итог, беря во внимание, что в нашем распоряжении для записи цифр числа имеется всего 4 разряда, и запишем его вновь в форме с плавающей запятой, в данной разрядной сетке:
X-Y:
1 3 4 5 + 0 0
Сравнив итог с начальными операндами увидим, что хотя оба операнда были отличны от нуля, итог и уменьшаемое вполне совпадают!
Вывод.
При вычитании 2-ух чисел огромное к примеру, если схожее вычитание производится в условии прекращения цикла, имеющем вид “(X-Y)>0.01”, то данное условие может никогда не выполниться, т.е. произойдет так называемое зацикливание.
Доборная литература по материалу раздела.
1. Савельев А.Я. Прикладная теория цифровых автоматов. Учебник для втузов. М.: 1989.
]]>