Курс на Си. Подбельский. Курс программирования на Си. В., Фомин С. С. Курс программирования на языке Си Учебник
Скачать 1.57 Mb.
|
Таблица П3.7. Специальные функции (продолжение)
Таблица П3.7. Специальные функции (окончание)
Приложение 4 МОДЕЛИ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ НА РАЗЛИЧНЫХ КОМПЬЮТЕРНЫХ ПЛАТФОРМАХ При разработке программных продуктов необходимо учитывать платформу (аппаратная и программная составляющие), в среде которой реализован компилятор с языка Си, и платформу, в среде которой будет эксплуатироваться созданный программный продукт, так как платформа существенным образом влияет на размерность данных различных типов. Основными характеристиками платформы являются: тип процессора; разрядность процессора; разрядность приложения (его ориентация на аппаратную платформу); размерность данных (количество битов, отводимое для представления данных). В табл. 1 приведены сведения о разрядности процессоров, приложений и данных. Таблица 1. Характеристики различных платформ Процессоры 4 бита 8 бит 12 бит 16 бит 18 бит 24 бита 31 бит 32 бита 36 бит 48 бит 64 бита 128 бит Приложения 4 бита 8 бит 16 бит 32 бита 64 бита 128 бит Размерность данных 4 бита 8 бит 16 бит 32 бита 64 бита 128 бит полубайт байт октет слово «двойное слово» «суперслово» В настоящее время наиболее распространены 32-разрядная архитектура процессоров и 32-разрядные приложения. Однако в ближайшем будущем 64-битовые системы могут стать весьма распространенными, и это обстоятельство необходимо учитывать при разработке программных систем. Точность и диапазон представления чисел зависят от количества битов, отведенных для запоминания этого числа. В табл. 2 приведен пример изменения диапазона целых чисел в зависимости от числа бит представления числа. Таблица 2. Зависимость значения целого числа от количества битов, отведенное на его представление
Существуют так называемые «модели данных», задающие правила представления чисел для различных платформ. Модель ILP32. Типы int, long и указатель имеют длину 32 бита. Эта модель является стандартной для большинства 32-раз- рядных компьютеров. Модель ILP32LL. Типы int, long и указатель имеют длину 32 бита. Стандартом C99 введен новый тип - long long, имеющий длину 64 бита. Этот тип позволяет расширить длину представления чисел до минимального значения в 64 бита, но при этом не затрагиваются фундаментальные положения языка. Модель LP64. Тип long и указатель имеют длину 64 бита. Модель ILP64. Типы int, long и указатель имеют длину 64 бита. Тип int получает длину в 64 бита, что является весьма важным для языка. Модель LLP64 - указатели и новый тип long long имеют длину 64 бита. Типы int и long остаются 32-битовыми типами. При переносе ПО из среды, поддерживающей модель данных ILP32, в среду, где обеспечивается модель ILP64, происходят фун- Модели представления чисел на различных компьютерных платформах 371 даментальные изменения, так как указатели и данные типа int не являются более одного типа, а указатели и данные типа long являются 64-битовыми и выровнены на границу 64 бита. Эти различия могут потенциально повлиять на следующие операции и объекты: округление данных (data truncation); работа с указателями; преобразование операндов к одному типу (перед выполнением операции); выравнивание данных и разделение данных; работа с константами; сдвиг данных (bit shifts) и битовые маски; битовые поля; перечислимые типы. В этом учебнике мы будем ориентироваться на 32-разрядную архитектуру процессоров и 32-разрядные приложения как самые распространенные в настоящее время. В табл. 3 приведены типичные длины и диапазоны целых чисел для этой архитектуры. Таблица 3. Размеры и диапазоны целых чисел на 32-битовой платформе
Литература Керниган Б., Ритчи Д., Фьюер А. Язык программирования Си: задачи по языку Си. - М.: Финансы и статистика, 1985. - 279 с. Керниган Б., Ритчи Д. Язык программирования Си. - М.: Финансы и статистика, 1992. - 272 с. Болски М.И. Язык программирования Си: справочник. - М.: Радио и связь, 1988. - 96 с. Хэнкок Л., Кригер М. Введение в программирование на языке Си. - М.: Радио и связь, 1986. - 192 с. Жешке Р. Толковый словарь стандарта языка Си. - СПб.: Питер, 1994. - 222 с. Уэйт М., Прата С., Мартин Д. Язык Си: руководство для начинающих. - М.: Мир, 1988. - 512 с. Банахан М., Раттер Э. Введение в операционную систему UNIX. - М.: Радио и связь, 1985. - 344 с. Белецкий Я. Энциклопедия языка Си. - М.: Мир, 1992. - 687 с. Подбельский В.В., Фомин С.С. Программирование на языке Си. - 2-е изд. - М.: Финансы и статистика, 1999. - 600 с. Подбельский В.В. Практикум по программированию на языке Си. - М.: Финансы и статистика, 2004. - 576 с. Джехани Н. Программирование на языке Си. - М.: Радио и связь, 1988. - 272 с. Юлин В.А., Булатова И.Р. Приглашение к Си. - Минск: Вышейшая школа, 1990. - 224 с. Уинер Р. Язык Турбо Си. - М.: Мир, 1991. - 380 с. Романовская Л.М., Русс Т.В., Свитковский С.Г. Программирование в среде Си для ПЭВМ ЕС.- М.: Финансы и статистика, 1991. - 352 с. Трой Д. Программирование на языке Си для персонального компьютера IBM PC. - М.: Радио и связь, 1991. - 430 с. Бочков С.О., Субботин Д.М. Язык программирования Си для персонального компьютера. - М.: СП «Диалог», 1990. - 384 с. Дерк Л. С и С++: справочник / пер. с нем. - М.: Восточная книжная компания, 1997. - 592 с. Тондо К., Гимпел С. Язык Си: книга ответов. - М.: Финансы и статистика, 1994. - 160 с. Предметный указатель A - Z ANSI-стандарт, 138 ESC-sequence, см. Эскейп-последователь- ность l-значение, 32, 35 MS-DOS, 326, 352 UNIX, 6, 8, 156, 163, 283, 322, 336, 343 Windows, 6, 235, 324, 354 А Абстрактный тип, 264 Агрегирующий тип, 240 Аддитивная операция, 31, 33, 45, 66, 145, 146 Адрес, см. Операция получения адреса Алфавит языка Си, 11 Аргумент макроса, 115, 130, 134, 135 Аргумент функции, 37, 38, 43, 61, 62, 67, 73, 95, 98, 178, 181, 204, 294 Арифметический тип, см. Тип арифметический Арифметическое выражение, см. Выражение арифметическое Арифметическое преобразование, см. Операция преобразования Б Бинарные операции, 35 Бинарный режим, 287 Битовое поле, 51, 277, 282 Блок, 22, 40, 60, 68, 95, 155, 164, 227, 284, 352 Буфер ввода-вывода клавиатуры, 75 операционной системы, 284, 290 Буферизация, 322 В Ввод, 43, 56, 73, 87, 89, 165, 200, 288, 292, 322, 328 Вещественная константа, см. Константа вещественная Вложение блоков, см. Блок инициализаторов, 290 комментариев, см. Комментарий операторов цикла, 77, 84, 91 переключателей, см. Оператор switch составных операторов, см. Составной оператор структур, 253 условных операторов, см. Условный оператор Возвращаемое значение, см. Значение, возвращаемой функцией Восьмеричная константа, см. Константа восьмеричная Вывод, 43, 56, 60, 61, 123, 124, 165, 210, 365 Выражение, 32, 35, 42, 44, 46, 47, 67, 78, 96, 108, 145, 159, 183, 240, 323, 327 арифметическое, 54 леводопустимое, см. Леводопустимое выражение логическое, 46, 54, 69, 78 модифицируемое именующее, 35, 47, см. l-значение первичное, 98 постфиксной формы, 45 префиксной формы, 45 присваивания, см. Операция присваивания пустое, 42 условное, 54 целочисленное константное, 125 Вычитание, см. Операция вычитания Г Глобальный объект, 56, 59, 124, 229, 230, 231 переменная, 227, 229, 230, 329, 332 Д Двоичный режим обмена с файлами, см. Бинарный режим Декремент, см. Операция «декремент» Деление, см. Операция деления Десятичная константа, см. Константа десятичная Динамическая память, 230, 231, 232 выделение, см. Память, динамическое выделение управление, 159 Динамическое представление данных, 267 Динамические массивы, 154, 155, 157, 159, 161 см. Массив динамический объекты, 232, 266 односвязные списки, 269 структуры, 223 информационные, 267, 268, 269, 271 Директива препроцессора |