Типы для целочисленных данных
Тип целых чисел в общем случае включает подмножество целых чисел, определяемое числом разрядов, которое используется для внутреннего представления значений.
При определении типа целых чисел обычно стремятся к тому, чтобы множество его значений было симметрично относительно нуля (собственно, это стимулируется и стандартными свойствами машинной целочисленной арифметики). Поэтому приходится тратить один бит на значение знака числа и при использовании n бит для внутреннего представления целого соответствующий тип содержит значения в диапазоне от `-2^{n-1}` до `2^{n-1}`.
В подавляющем большинстве современных процессоров отрицательные целые числа обычно представляют в дополнительном коде.
В языках, ориентированных на 32-разрядные компьютеры, в частности, в стандартных Си и Си++ для рационального использования памяти допускаются модификации целого типа
short int (обычно 16-разрядные),
int (обычно то же самое, что
и long int)
и long int (обычно 32-разрядные),
а также байтовые целые (char).
При этом поддерживаются автоматические преобразования значений типов меньшего размера к значениям типов большего размера.
Пока не очень понятно, какие встроенные целые типы будут зафиксированы в будущем "64-разрядном" стандарте языка Си, но многие компании считают разумным использовать модель под названием LP64, в которой предполагается размер char – 8 бит, размер short int – 16 бит, размер int – 32 бита и размер long int и long long int – 64 бита.
Наряду со знаковыми целыми типами в языках часто поддерживаются беззнаковые целые. Такие типы в линии языков Паскаль называются CARDINAL, а в линии языков Си именуются путем добавления модификатора
unsigned
к названию соответствующего целого типа. Таким образом, в последнем случае существуют типы
unsigned char,
unsigned short int,
unsigned int
и
unsigned long int.
Поскольку множество значений типа unsigned в два раза мощнее множества значений соответствующего целого типа, то поддерживается их автоматическое преобразование только к целым типам большего размера.