Целочисленные данные в языке Си могут быть представлены в одной из следующих систем счисления:
Десятичные
| Последовательность цифр (0 — 9), которая начинаются с цифры, отличной от нуля. Пример: 1, -29, 385. Исключение — число 0.
|
Восьмеричные
| Последовательность цифр (0 — 7), которая всегда начинается с 0. Пример: 00, 071, -052, -03.
|
Шестнадцатеричные
| Последовательность шестнадцатеричных цифр (0 — 9 и A — F), которой предшествует присутствует 0x. Пример: 0x0, 0x1, -0x2AF, 0x17.
|
Двоичная система представления данных непосредственно в языке Си не поддерживается. Однако можно воспользоваться файлом binary.h, в котором определены двоичные константы в пределах байта.
Пример использования двоичной системы счисления в языке Си:
#include <stdio.h>
#include "binary.h"
int main()
{
unsigned char p = b10001001 | b00001010; // p=b10001011=139
printf("p = %dd = %xh", p, p);
getchar(); getchar();
return 0;
}
Результат выполнения
В зависимости от значения целой константы компилятор присваивает ей тот или иной тип (char, int, long int).
С помощью суффикса U (или u) можно представить целую константу в виде беззнакового целого.
Например, Константе 200U выделяется 1 байт, и старший бит используется для представления одного из разрядов кода числа и диапазон значений становится от 0 до 255. Суффикс L (или l) позволяет выделить целой константе 8 байт (long int).
Совместное использование в любом порядке суффиксов U (или u) и L (или l) позволяет приписать целой константе тип unsigned long int, и она займет в памяти 64 разряда, причем знаковый разряд будет использоваться для представления разряда кода (а не знака).