Жмакин А.П. Архитектура ЭВМ (2006), страница 6
Описание файла
Документ из архива "Жмакин А.П. Архитектура ЭВМ (2006)", который расположен в категории "". Всё это находится в предмете "техника и элементная база средств цифровой обработки сигналов (тэбс цос)" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. .
Онлайн просмотр документа "Жмакин А.П. Архитектура ЭВМ (2006)"
Текст 6 страницы из документа "Жмакин А.П. Архитектура ЭВМ (2006)"
Людьми использовались различные способы записи чисел, которые можно объединить в несколько групп: унарная, непозиционные и позиционные.
Унарная — это система счисления, в которой для записи чисел используется только один знак — | (вертикальная черта, палочка). Следующее число получается из предыдущего добавлением новой палочки: их количество (сумма) равно самому числу. Унарная система важна в теоретическом отношении, поскольку в ней число представляется наиболее простым способом и, следовательно, просты операции с ним. Кроме того, именно унарная система определяет значение целого числа количеством содержащихся в нем единиц, которое, как было сказано, не зависит от формы представления.
Из непозиционных наиболее распространенной можно считать римскую систему счисления. В ней некоторые базовые числа обозначены заглавными латинскими буквами: 1 — I, 5 — V, 10— X, 50 — L, 100— С, 500— D, 1000 — М. Все другие числа строятся комбинаций базовых в соответствии со следующими правилами:
□ если цифра меньшего значения стоит справа от большей цифры, то их значения суммируются; если слева— то меньшее значение вычитается из большего;
□ цифры I, X, С и М могут следовать подряд не более трех раз каждая;
□ цифры V, L и D могут использоваться в записи числа не более одного раза.
Например, запись XIX соответствует числу 19, MDXLIX— числу 1549. Запись чисел в такой системе громоздка и неудобна, но еще более неудобным оказывается выполнение в ней даже самых простых арифметических операций. Отсутствие нуля и знаков для чисел больше М не позволяют римскими цифрами записать любое число (хотя бы натуральное). По указанным причинам теперь римская система используется лишь для нумерации.
В настоящее время для представления чисел применяют, в основном, позиционные системы счисления.
Определение
Позиционными называются системы счисления, в которых значение каждой цифры в изображении числа определяется ее положением (позицией) в ряду других цифр.
Наиболее распространенной и привычной является система счисления, в которой для записи чисел используется 10 цифр: 0, 1,2, 3, 4, 5, 6, 7, 8 и 9. Число представляет собой краткую запись многочлена, в который входят степени некоторого другого числа — основания системы счисления. Например:
575,15 = 5 • 102 + 7 ∙ 101 + 5 ∙ 10° +1 • 10-1 -I- 5 • 10-2.
В данном числе цифра 5 встречается трижды, однако значение этих цифр различно и определяется их положением (позицией) в числе. Количество цифр для построения чисел, очевидно, равно основанию системы счисления. Также очевидно, что максимальная цифра на 1 меньше основания. Причина широкого распространения именно десятичной системы счисления понятна— она происходит от унарной системы с пальцами рук в качестве "палочек".
Однако в истории человечества имеются свидетельства использования и других систем счисления — пятеричной, шестеричной, двенадцатиричной, двад цатиричной и даже шестидесятиричной. Общим для унарной и римской сис тем счисления является то, что значение числа в них определяется посредст вом операций сложения и вычитания базисных цифр, из которых составлен число, независимо от их позиции в числе. Такие системы получили названи аддитивных.
В отличие от них позиционное представление следует считать аддитивно мультипликативным, поскольку значение числа определяется операциям умножения и сложения. Главной же особенностью позиционного представления является то, что в нем посредством конечного набора знаков (цифр, разделителя десятичных разрядов и обозначения знака числа) можно записать неограниченное количество различных чисел. Кроме того, в позиционных системах гораздо легче, чем в аддитивных, осуществляются операции умножения и деления. Именно эти обстоятельства обуславливают доминирование позиционных систем при обработке чисел как человеком, так и компьютером.
По принципу, положенному в основу десятичной системы счисления, очевидно, можно построить системы с иным основанием. Пусть р — основание системы счисления. Тогда любое число Z (пока ограничимся только целыми числами), удовлетворяющее условию Z<рк (к>0, целое), может быть представлено в виде многочлена со степенями (при этом, очевидно, максимальный показатель степени будет равен к -1):
Из коэффициентов ау при степенях основания строится сокращенная запись числа:
Индекс р числа Z указывает, что оно записано в системе счисления с основанием р: общее число цифр числа равно к. Все коэффициенты о ■ — целые числа, удовлетворяющие условию: 0 < я< р- \.
Уместно задаться вопросом: каково минимальное значение рЧ Очевидно,
р = \ невозможно, поскольку тогда все о, =0 и форма (3.1) теряет смысл.
Первое допустимое значение р = 2 — оно и является минимальным для позиционных систем.
Система счисления с основанием 2 называется двоичной. Цифрами двоичной системы являются 0 и 1, а форма (3.1) строится по степеням 2. Интерес именно к этой системе счисления связан с тем, что, как указывалось выше, любая информация в компьютерах представляется с помощью двух состояний — 0 и 1, которые легко реализуются технически.
Наряду с двоичной в компьютерах используются восьмеричная и шестнадца-теричная системы счисления — причины будут рассмотрены далее.
3.2. Представление чисел
в различных системах счисления
Очевидно, что значение целого числа, т. е. общее количество входящих в него единиц, не зависит от способа его представления и остается одинаковым во всех системах счисления; различаются только формы представления одного и того же количественного содержания числа.
Например: |||||i=510 =Ю12 =516.
Поскольку одно и то же число может быть записано в различных системах счисления, встает вопрос о переводе представления числа из одной системы в другую.
3.2.1. Перевод целых чисел
из одной системы счисления в другую
Обозначим преобразование числа Z, представленного в ^-ричной системе счисления в представление в q-ричной системе как Zp^Zq. Теоретически возможно произвести его при любых q и р. Однако подобный прямой перевод будет затруднен тем, что придется выполнять операции по правилам арифметики недесятичных систем счисления (полагая в общем случае, что р, #*10).
По этой причине более удобными с практической точки зрения оказываются варианты преобразования с промежуточным переводом Zp -> Zr -> Zq с основанием г, для которого арифметические операции выполнить легко. Такими удобными основаниями являются г = 1 и г = 10, т. е. перевод осуществляется через унарную или десятичную систему счисления.
Преобразование Zp ->Zj -> Zq
Идея алгоритма перевода предельно проста: положим начальное значение Zq:=0; из числа Zp вычтем 1 по правилам вычитания системы р, т.е. Zp:=Zp-\, и добавим ее к Zq по правилам сложения системы q, т.е. Zq := Zq +1 . Будем повторять эту последовательность действий, пока не достигнем Zp=0. Правила сложения с 1 (инкремента) и вычитания 1 (декремента) могут быть записаны так, как представлено в табл. 3.1.
Примечание: П— перенос в случае инкремента или заем в случае декремента.
Промежуточный переход к унарной системе счисления в данном случае осуществляется неявно — используется упоминавшееся выше свойство независимости значения числа от формы его представления. Рассмотренный алгоритм перевода может быть легко реализован программным путем.
Преобразование Zp -> Zw Zq
Очевидно, первая и вторая часть преобразования не связаны друг с другом, что дает основание рассматривать их по отдельности. Алгоритмы перевода Zw->Zq вытекают из следующих соображений. Многочлен (3.1) для Zq может быть представлен в виде:
где m — число разрядов в записи Zp, a bj(j = 0,/и-1)— цифры числа Zq.
Позаимствуем из языка PASCAL обозначение двух операций: div— результат целочисленного деления двух целых чисел и mod— остаток от целочисленного деления (13 div 4 = з; 13 mod 4 = i).
Теперь если принять ym_, =bm_], то в (3.2) усматривается следующее рекуррентное соотношение:
у, =у,+1 +*,, из которого, в свою очередь, получаются выражения:
Аналогично, если принять 80 = b0, то для правой части числа будет справедливо другое рекуррентное соотношение: 8,=8м+£,9 , из которого следуют:
Из соотношений (3.3) и (3.4) непосредственно вытекают два способа перевода целых чисел из десятичной системы счисления в систему с произвольным основанием q .
Способ 1 является следствием соотношений (3.3), предполагающий следующий алгоритм перевода:
1. Целочисленно разделить исходное число (Z10) на основании новой системы счисления (q) и найти остаток от деления — это будет цифра 0-го разряда числа Zq.
2. Частное от деления снова целочисленно разделить на q с выделением остатка; процедуру продолжать до тех нор, пока частное от деления не окажется меньше q.
3. Образовавшиеся остатки от деления, поставленные в порядке, обратном порядку их получения, и представляют Zq.
\ Пример 3.1
Выполнить преобразование 12310 -> Z5. Результат — на рис. 3.1.
Рис. 3.1. Результат выполнения примера 3.1
Остатки от деления (3, 4) и результат последнего целочисленного деления (4) образуют обратный порядок цифр нового числа. Следовательно, 12310 =4435.
Необходимо заметить, что полученное число нельзя читать как "четыреста сорок три", поскольку десятки, сотни, тысячи и прочие подобные обозначения чисел относятся только к десятичной системе счисления. Прочитывать число следует простым перечислением его цифр с указанием системы счисления ("число четыре, четыре, три в пятеричной системе счисления").
Способ 2 вытекает из соотношения (3.4), действия производятся в соответствии со следующим алгоритмом:
1. Определить m-l — максимальный показатель степени в представления числа по форме (3.1) для основания q.
2. Целочисленно разделить исходное число (Z10) на основание новой системы счисления в степени m-l (т. е. qm~x) и найти остаток от деления; результат деления определит первую цифру числа Zq.
3. Остаток от деления целочисленно разделить на gm~2, результат деления принять за вторую цифру нового числа; найти остаток; продолжать эту последовательность действий, пока показатель степени q не достигнет значения 0.
Продемонстрируем действие алгоритма на той же задаче, что была рассмотрена выше.
Определить ли — 1 можно либо путем подбора (5°=1<123; 51 = 5 < 123;
2 3
5 = 25< 123; 5 = 125> 123, следовательно, m-1 = 2), либо логарифмированием с оставлением целой части логарифма (log5 123 = 2,99, т.е. wj — 1 = 2 ).
Далее:
b = 123 div 52 =4 8, =23mod 52 =23 / = 2-1 =1
6, = 23 div 51 = 4 80 =23 mod51=3 / = 0
Алгоритмы перевода Zg—>ZW явно вытекают из представлений (3.1) или (3.2): необходимо Zp представить в форме многочлена и выполнить все операции по правилам десятичной арифметики.
Выполнить преобразование 4435 -> Z\0.
Решение:
4435 =4∙52 +4∙51 +3∙5° =4∙25+ 4∙5+ 3∙1 = 12310
Необходимо еще раз подчеркнуть, что приведенными алгоритмами удобно пользоваться при переводе числа из десятичной системы в какую-то иную или наоборот. Они работают и для перевода между любыми иными системами счисления, однако преобразование будет затруднено тем, что все арифметические операции необходимо осуществлять по правилам исходной (в первых алгоритмах) или конечной (в последнем алгоритме) системы счисления.