Максимов Н.В., Партыка Т.Л., Попов И.И. Архитектура ЭВМ и вычислительных систем (2005) (1186253), страница 11
Текст из файла (страница 11)
е. для представления чисел с учетом их знака, в вычислительных машинах используются специальные коды:• прямой код числа;• обратный код;• дополнительный код.При этом два последних кода позволяют заменить неудобнуюдля компьютера операцию вычитания на операцию сложения с отрицательным числом. Дополнительный код обеспечивает более быстрое выполнение операций, поэтому в компьютере чаще всего применяется именно он.Прямой код числа N (обозначим [Л^]пр).Пусть N = а,, а2, я3, ..., ат, тогда:при y V > 0 , [N]np = 0, а,, а2, а3, •-., ат,при Л'<0, [N]np = 1, а,, аъ я3, ..., ат,при jV = 0 имеет место неоднозначность [0]пр = 0, 0 ...
= 1, 0 ....54Глава 1. Вычислительные приборы и устройства.,Если при сложении в ЭВМ оба слагаемых имеют одинаковыйзнак, то операция сложения выполняется обычным путем. Если присложении слагаемые имеют разные знаки, то сначала необходимовыявить большее по абсолютной величине число, из него произвести вычитание меньшего по абсолютной величине числа и разностиприсвоить знак большего числа.Выполнение операций умножения и деления в прямом коде выполняется обычным образом, но знак результата определяется посовпадению или несовпадению знаков участвовавших в операциичисел.Операцию вычитания в этом коде нельзя заменить операциейсложения с отрицательным числом, поэтому возникают сложности,связанные с займом значений из старших разрядов уменьшаемогочисла. В связи с этим прямой код в ЭВМ почти не применяется.Обратный код числа N, обозначим [N]o5p.Пусть N=a{, a2, а3, ..., ат и а обозначает инверсию а, т.
е. еслиа = 1, то а = 0, и наоборот. Тогда:при N> 0, [7V]o6p = 0, а„ а2, а3, ..., а,„;при N< 0, [N]o5p = 1, а,, аъ а 3 , ..., ат;при N=0 имеет место неоднозначность [0]обр = 0,00...О = 1Д1...1.Для того чтобы получить обратный код отрицательного числа,необходимо все цифры этого числа инвертировать, т. е. в знаковомразряде поставить 1, во всех значащих разрядах нули заменить единицами, а единицы нулями.Например,для N= 1011 [N]o5p = 0,1011;для N= -1011 [N]o5p= 1,0100.Дополнительный код числа N, обозначим [//]доп.Пусть, как и выше, N=at, a2, а3, ..., ат и а обозначает величину, обратную а (инверсию а), т.
е. если а = 1, то а = 0, и наоборот.Тогда:при N> О, [ЛПЛОП = 0, а„ а2, а3, ..., ат;при N<0, [N]aon=\, в„ аъ a3, ..., ат + 0,00...!.Для того чтобы получить дополнительный код отрицательногочисла, необходимо все его цифры инвертировать (в знаковом разряде поставить единицу, во всех значащих разрядах нули заменитьединицами, а единицы — нулями) и затем к младшему разряду прибавить единицу. В случае возникновения переноса из первого послезапятой разряда в знаковый разряд к числу следует прибавить единицу в младший разряд.1.3.
Информация, кодирование, обработка в ЭВМ55Например,для N = 1011, [УУ]ДОП = 0,1011;для N = -1100, [ЛП Д О П = 1,0100;для #=-0000, [N]wn = 10,0000 = 0,0000 (1 исчезает). Неоднозначности в изображении 0 нет.Эмпирическое правило: для получения дополнительного кодаотрицательного числа необходимо все символы этого числа инвертировать, кроме последней (младшей) единицы и тех нулей, которые за ней следуют.Элементы двоичной арифметики. Рассмотрим, как выполняютсяарифметические действия в двоичной системе.
Для этого проведеманализ таблиц сложения и умножения в двоичной системе:0 + 0 = 0, 0x0 = 0, 0+1 = 1, 0x1 = 0, 1 + 1 = 10.Следует обратить внимание на аналогию в правилах выполнения арифметических действий в двоичной и десятичных системахсчисления: если при сложении двух двоичных чисел (точнее, представленных в двоичной системе счисления) сумма цифр окажетсябольше единицы, то возникает перенос в старший разряд; еслиуменьшаемая цифра меньше вычитаемой, то нужно сделать «заем»единицы в старшем разряде.Анализируя примеры умножения в двоичной системе счисления, необходимо обратить внимание на одну важную особенностьвыполнения этой операции в данной системе.
Так как очереднаяцифра множителя может быть только 1 или 0, то промежуточноепроизведение равно либо множимому, либо 0. Таким образом, операция умножения в двоичной системе фактически не производится:в качестве промежуточного произведения записывается либо множимое, либо 0, а затем промежуточные произведения суммируются.Иначе говоря, операция умножения заменяется последовательнымсложением.Как уже известно, дополнительный код используется для вычитания чисел в компьютерах и позволяет эту операцию свести к сложению чисел.Правила выполнения вычитания с дополнительным числом следующие.
Чтобы вычесть число А из числа В, достаточно сложить В сдополнительным числом к А и отбросить перенос в соседний старший разряд. Например, чтобы вычесть 623 из 842, достаточно сложить 842 с 377; отбросив перенос, получим 219 (842 - 623 = 219).Таким образом, важнейшее преимущество двоичной арифметики заключается в том, что она позволяет все арифметические дейст-56Глава 1. Вычислительные приборы и устройства...вия свести к одному — сложению, а это значительно упрощает устройство процессора ЭВМ.Изложенные здесь основные принципы положены в основуфункционирования элементов и узлов ЭВМ (см.
далее — триггер,сумматор, полусумматор).Типы и структуры данныхТипы данных (табл 1.12) Классификация информационныхединиц, обрабатываемых на ЭВМ включает следующие аспекты:• типы данных, или совокупность соглашений о программно-аппаратурной форме представления и обработки, а такжеввода, контроля и вывода элементарных данных,• структуры данных — способы композиции простых данных вагрегаты и операции над ними;• форматы файлов — представление информации на уровневзаимодействия операционной системы с прикладными программами.Ранние языки программирования (ЯП), а точнее — системыпрограммирования (СП) — Фортран, Алгол, будучи ориентированыисключительно на вычисления, не содержали развитых систем типов и структур данных.В ЯП Алгол символьные величины и переменные вообще непредусматривались, в некоторых реализациях строки (символы вапострофах) могли встречаться только в операторах печати данных.Типы числовых данных Алгола: INTEGER (целое число), REAL(действительное) — различаются диапазонами изменения, внутренними представлениями и применяемыми командами процессораЭВМ (соответственно арифметика с фиксированной и плавающейточкой).
Нечисловые данные представлены типом BOOLEAN — логические, имеющие диапазон значений (true, false}.Позже появившиеся ЯП (СП) Кобол, PL/1, Паскаль вводят новые типы данных'• символьные (цифры, буквы, знаки препинания и пр );• числовые символьные для вывода;• числовые двоичные для вычислений,• числовые десятичные (цифры 0—9) для вывода и вычисленийРазновидности числовых данных здесь соответствуют внутреннему представлению и машинным (или эмулируемым) командамобработки. Кроме того, вводятся числа двойного формата (два машинных слова), для обработки которых также необходимо наличие571.3. Информация, кодирование, обработка в ЭВМТаблица 1 12 Типы и структуры данных в некоторых системах программированияи управления даннымиС и с т е м а - язык программирования, СУБД, ИПСOracle/SQLSTAIRS,IRBIS,ISIS-Small-mt-N(x)Int----N(xy)N(xy)FloatReal----FloatDouble--Binary-B(x)---PIC(9)Decimal-P(x)---PIC(X)-N(x)U(x)ЛогическоеBoolean-+Logical---Символьное-PIC(A)CharCMAMChar+Длинный текстовый илибинарный объект (BLOB)---Memo-VarGraficVarCharДата---Date-Date-Время-----Time-Array-Dim--Записи (структуры)-+++++-Множественные (векторные) поля записи----MUГрупповые поля записи-++-GR-+Повторяющиеся группы взаписи----PE--Текстовые поля (параграфы, предложения,слова)------+ДанныеКоболPL/1----Целое норм (4 байта)IntegerComputationalIntN(x)Целое длинн (8 байт)--Double IДействительное норм(4 байта)RealComputationalRoatДейств двойное (8 байт)--Двоичное-Десятичное упакованное(2 цифры на байт)Десятичное распакованное (1 цифра на байт)Тип данныхЦелое короткое (2 байта)МассивыСтруктуры данныхFoxBase/ Adabas/ClipperNaturalАлголDimention VAR(n)-+58Глава 1.
Вычислительные приборы и устройства...в процессоре (или эмуляция) команд обработки чисел двойной длины (точности).Уместно привести пример представления числовой информациив различных перечисленных формах. Пусть задано число 13510 == 207 8 =87 | 6 = 100000111,, тогда:• внутренняя стандартная форма представления (тип BINARYдля обработки в двоичной арифметике) — сохраняется(100000111,). Объем — 1 байт, или 8 двоичных разрядов;• внутренняя форма двоично-десятичного представления (типDECIMAL, каждый разряд десятичного числа представляется двоично-десятичной, в 4 бита, комбинацией). Представление 135 есть 001011 1012.
Объем — 2,5 байта, 12 двоичных разрядов;• символьное представление (тип ALPHABETIC, для вывода) —каждый разряд представляется байтом в соответствии с кодомASCII (табл. приложения 2). Представление 135 есть —00110001 00110011 001101012. Объем - 3 байта.Некоторые системы программирования (Fortran IV, например)поддерживают операции над комплексными числами вида Z= A + Bi(где А, В — действительные коэффициенты, а / — мнимая единица).Очевидно, для размещения таких чисел необходим как минимумдвойной расход оперативной памяти (по одному слову для размещения действительной и мнимой частей при обычной точности и подва слова при двойной точности).