Попов И.И., Матвеев А.А., Максимов Н.В. Архитектура электронно-вычислительных машин и систем (2004) (1186255), страница 16
Текст из файла (страница 16)
Всовременных компьютерах естественная форма представления используется как вспомогательная и только для целых чисел.В форме представления с плавающей запятой каждое числоизображается в виде двух групп цифр:- мантисса- порядокПри этом абсолютная величина мантиссы должна быть меньше 1,а порядок должен быть целым числом.
В общем виде число в форме сплавающей запятой может быть представлено так:93N = ±M×P ± rгде:М - мантисса числа (|М| < 1)r - порядок числа (целое число)Р- основание системы счисленияНапример, приведенные ранее числа в нормальной формезапишутся следующим образом:+0,721355×103+0,328×10- 3-0,103012026×105Нормальная форма представления обеспечивает большой диапазонотображения чисел и является основной в современных компьютерах.Так, диапазон значащих чисел в системе счисления с основанием Р приналичии m разрядов у мантиссы и s разрядов у порядка (без учетазнаковых разрядов порядка и мантиссы) будет:P−m×P− ( P s −1)≤ N ≤ (1 − P−m)×P( P s −1)Например, при Р = 2, m = 22 и s = 10 диапазон чисел простираетсяпримерно от 10-300 до 10300. Для сравнения: количество секунд,которые прошли с момента образования планеты Земля, составляетвсего (приблизительно) 1018.Следует заметить, что все числа с плавающей запятой хранятся вмашине в так называемом нормализованном виде.Нормализованным называют такое число, в старшем разрядемантиссы которого стоит единица.
У нормализованных двоичных чисел,следовательно 0,5 < |А| < 1.Алгебраическое представление двоичных чиселЗнак числа обычно кодируется двоичной цифрой, при этом:- код 0 означает знак + (плюс)- код 1 - знак - (минус)Для алгебраического представления чисел, то есть дляпредставления чисел с учетом их знака, в вычислительных машинахиспользуются специальные коды:- прямой код числа- обратный код числа- дополнительный код числаПри этом два последних кода позволяют заменить неудобную длякомпьютера операцию вычитания на операцию сложения сотрицательным числом.
Дополнительный код обеспечивает болеебыстрое выполнение операций, поэтому в компьютере применяетсячаще именно он.Прямой код числа N (обозначим [N]пр).Пусть N = а1 а2 а3 ... аm.94- при N > 0, [N]пр = 0, а1 а2 а3 ... аm- при N < 0, [N]пр = 1, а1 а2 а3 ... ат- при N = 0, имеет место неоднозначность [0]пр = 0,0… = 1,0…Если при сложении в ЭВМ оба слагаемых имеют одинаковый знак,то операция сложения выполняется обычным путем.
Если при сложениислагаемые имеют разные знаки, то сначала необходимо выявитьбольшее по абсолютной величине число, произвести из него вычитаниеменьшего по абсолютной величине числа и разности присвоить знакбольшего числа.Выполнение операций умножения и деления в прямом кодевыполняется обычным образом, но знак результата определяется посовпадению или несовпадению знаков участвовавших в операции чисел.Операцию вычитания в этом коде нельзя заменить операциейсложения с отрицательным числом, поэтому возникают сложности,связанные с заемом значений из старших разрядов уменьшаемого числа.В связи с этим прямой код в ЭВМ почти не применяется.Обратный код числа N , обозначим [N]обрПусть N = а1 а2 а3 ... ат и ã обозначает величину обратную a(инверсию а), т.е.
если а=1, то ã = 0, и наоборот. Тогда:- при N > 0, [N]обр = 0, а1 а2 а3 ... ат- при N < 0, [N]обр = 1, ã 1 ã 2 ã 3 ... ã т- при N = 0, имеет место неоднозначность [0]обр = 0,00…0 =1,11…1Для того чтобы получить обратный код отрицательного числа,необходимо все цифры этого числа инвертировать, то есть в знаковомразряде поставить 1, во всех значащих разрядах нули заменитьединицами, а единицы нулями.Например,для N= 1011[N]обр = 0,1011,для N= - 1011[N]обр = 1,0100Дополнительный код числа N, обозначим [N]допПусть, как и выше, N = а1 а2 а3 ... ат и ã обозначает величинуобратную a (инверсию а), т.е.
если а=1, то ã = 0, и наоборот. Тогда:- при N ≥ 0, [N]доп = 0, а1 а2 а3 ... ат- при N ≤ 0, [N]доп = 1, ã 1 ã 2 ã 3 ... ã т + 0,00……1Для того чтобы получить дополнительный код отрицательногочисла, необходимо все его цифры инвертировать (в знаковом разрядепоставить единицу, во всех значащих разрядах нули заменитьединицами, а единицы нулями) и затем к младшему разряду прибавитьединицу. В случае возникновения переноса из первого после запятойразряда в знаковый разряд, к числу следует прибавить единицу вмладший разряд.Например,для N = 1011, [N]доп = 0,1011для N= - 1100, [N]доп = 1,010095для N= - 0000, [N]доп = 10,0000 = 0,0000 (1 исчезает).Неоднозначности в изображении 0 нет.Эмпирическое правило: для получения дополнительного кодаотрицательного числа необходимо все символы этого числаинвертировать, кроме последней (младшей) единицы и тех нулей,которые за ней следуют.Форматы представления числовой информации в ЭВМВ памяти ЭВМ числа с фиксированной точкой хранятся в трехформатах:а) полуслово - это 16 бит или 2 байтаб) слово - это 32 бита или 4 байтав) двойное слово - это 64 бита или 8 байтовОтрицательные числа с ФТ записываются в разрядную сетку вдополнительных кодах, которые образуются прибавлением единицы кмладшему разряду обратного кода.
Обратный код получается заменойединиц на нули, а нулей на единицы в прямом двоичном коде. Внулевом разряде разрядной сетке записывается единицами, а пустыеразряды заполняются единицами.Смешанные числа в ячейках памяти представляются с ПТследующим образом. Прежде всего число необходимо нормализоватьт.е. привести к правильной дроби.10,3510=0.103510×10+20,000072458=0,72458×8-4F5С,9В16=0,F5С9В16х16+3В памяти ЭВМ числа с ПТ хранятся в двух форматах:- слово - 31 бита или 4 байта- двойное слово - 64 бита или 8 байтРазрядная сетка для чисел с ПТ имеет следующую структуру:- нулевой разряд - это знак числа ( 0 - "+", 1 - "-")- с 1 по 7 разряд записывается характеристика порядка в прямомдвоичном коде, пустые разряды заполняются нулями. В первом разрядеуказывается знак порядка, + это 1, а - это 0.- с 8 по 31 (63) указывается мантисса, слева направо без нуляцелых в прямом двоичном коде и для отрицательных чисел и пустыеразряды заполняются нулями.Типы данныхСтруктураинформационныхединиц(см.Табл.8),обрабатываемых на ЭВМ включает следующие аспекты :- типы данных, или совокупность соглашений о программноаппаратурной форме представления и обработки а также ввода, контроляи вывода элементарных данных;96- структуры данных - способы композиции простых данных вагрегаты и операции над ними;- форматы файлов - представление информации на уровневзаимодействия операционной системы с прикладными программами.Ранние языки программирования (ЯП), а точнее - системыпрограммирования (СП) - Фортран, Алгол, будучи ориентированыисключительно на вычисления, не содержали развитых систем типов иструктур данных.Таблица 23Типы и структуры данных в некоторых системахпрограммирования и управления даннымиAlgolТипданныхЦелое короткое(2 байта)Целое норм.(4 байта)Целое длинн.(8 б)Действительное норм.
(4байта)Действ. двойное(8 байт)ДвоичноеДесятичное упакованное(2 цифры на байт)Десятичноераспакованное(1 цифра на байт)ЛогическоеСимвольноеДлинный текстовый илибинарный объект (BLOB)ДатаВремяМассивыСтЗаписи (структуры)рМножественныеу(векторные) полякзаписитГрупповые поля записиур Повторяющиеся группы вызаписиТекстовые поля(параграфы, предложения,слова)С и с т е м а - язык программирования, СУБД, ИПСCobolPL/1Fox -Base/ Adabas/Na Oracle/ClipperturalSQL-----IntegerIntN(x)N(x)DoubleFloatN(x.y)N(x.y)-ComputatonalComputational-----PIC(9)BinaryDecimal--PIC(X)-Boolean-PIC(A)-ArrayRealSmallintIntSTAIRS, IRBIS,ISIS--B(x)P(x)FloatRealFloatDouble-N(x)U(x)--+Char-LogicalC(x)MemoA(x)-+--DimDateDimen-tionVAR(n)CharVarGraficVarCharDateTime--+-+-+-+MU+-+-++-GR-+----PE--------+97---В ЯП Алгол символьные величины и переменные вообще непредусматривались, в некоторых реализациях строки (символы вапострофах) могли встречаться только в операторах печати данных.Типы числовых данных Алгола: INTEGER (целое число), REAL(действительное) - различаются диапазонами изменения, внутреннимипредставлениями и применяемыми командами процессора ЭВМ(соответственно арифметика с фиксированной и плавающей точкой).Нечисловые данные представлены типом BOOLEAN - логические,имеющие диапазон значений {TRUE, FALSE}.Позже появившиеся ЯП (СП) COBOL, PL/1, Pascal вводят новыетипы данных:- символьные (цифры, буквы, знаки препинания и пр.);- числовые символьные для вывода,- числовые двоичные для вычислений,- числовые десятичные (цифры 0 - 9) для вывода и вычислений.Разновидностичисловыхданныхздесьсоответствуютвнутреннему представлению и машинным (или эмулируемым) командамобработки.