54
перед наименованием целого типа указывать модификатор, указывающий,
например, что число заведомо неотрицательное (unsigned), — это
позволит за счет использования знакового разряда тем же набором бит
представить число большей абсолютной величины. Допустимы и другие
модификаторы, позволяющие при необходимости увеличить или
уменьшить отводимое под хранение переменной число двоичных разрядов.
Возможная реализация целочисленных типов в Си и диапазоны значений
(в большинстве современных реализаций следует умножить приводимые
значения на два, поскольку они ориентированы изначально на 32-
разрядную архитектуру):
int
16
бит -32768..+32767
unsigned int 16
бит 0..65535
short int
8
бит -128..+127
unsigned short 8
бит 0..+255
long int
32
бит -2147483648..+2147483647
unsigned long 32
бит 0..+4294967295
Достаточно интересно, что в языке Си допустимо использование
префиксов signed и unsigned без идущего затем указания типа.
Например, описание переменной
а как int
a будет полностью
эквивалентно описанию signed
int a и даже просто signed a;
Размер в битах прямо связан с тем, что для представления двух
альтернатив — 0 и 1 — достаточно одного двоичного разряда, четырех —
двух разрядов, и вообще
n бит дают возможность представления 2
n
различных кодов.
В Паскаль-семействе языков, а также Фортране, Алголе и Аде для
обозначения целого типа используется ключевое слово integer (в Аде
наименования типов пишутся с прописной буквы, в Фортране — часто
полностью прописными).
Для действительных чисел используются различные наименования их
приближений в языках программирования:
real
—
Паскаль, Модула, Оберон, Алгол, Фортран и др.;
float
—
Си, С++, Java, C#, Ада и др.
Небезынтересное название типа данных
число с плавающей точкой
(float
) связано со следующим. При записи чисел в нормализованной
экспоненциальной форме — а именно в ней хранится в двоичном виде в
памяти число данного типа — происходит перемещение запятой (в
англоязычных странах для отделения целой части от дробной используется
точка) — она «переплывает» с места на место. Например, 1255,1
представляется как 1,2551 · 10
3
.
55
В памяти при нормализованном представлении типа float хранится
двоичное число — мантисса с фиксированным числом битов и отдельно
порядок — аналогично фиксированное количество битов. Для больших
чисел может применяться тип данных с удвоенной длиной мантиссы,
например double в Cи, C++, Java
или DOUBLE PRECISION в Фортране.
Какие операции в языках программирования могут использоваться для
чисел? Как и следовало ожидать, это арифметические действия (сложение,
вычитание, умножение и деление) и сравнение. Для чисел допустимы
следующие виды сравнения: больше, меньше, равно, не равно, меньше или
равно, больше или равно. Результатом сравнения может быть специальная
переменная логического типа. В некоторых языках (Си, С++, PL/I, Java,
Ruby, C#, Паскаль) к числам применяются также побитовые логические
операции — сдвиг, И, НЕ, ИЛИ, исключающее ИЛИ.
Достарыңызбен бөлісу: