C. Тема 1. Раздел 3
.pdfТема 1. Основные сведения о языке. Раздел 3. Встроенные типы данных
Целые беззнаковые числа
Двоичные числа
Целые числа со знаком
Дополнительный код
Вещественные числа с фиксированной точкой
Вещественные числа с плавающей точкой
Символы
Объявления переменных и констант
Сравнение констант с символическими константами
Спецификаторы объявления переменной auto
и register
Часть 1
Целые числа без знака представлены очевидным образом – в двоичной системе счисления
100110102 = 15410 = 2328 = 9A16
Двоичная система – BIN
Восьмеричная система – OCT
Десятичная система – DEC
Шестнадцатеричная система – HEX
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Размер |
Минималь- |
|
|
|
Тип |
ное |
Максимальное значение |
|
|
|
в байтах |
|
|||
|
|
значение |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
unsigned char |
1 |
0 |
255 |
|
|
|
|
|
|
|
|
unsigned short |
2 |
0 |
65,535 |
|
|
|
|
|
|
|
|
unsigned int |
2 |
0 |
65,535 |
|
|
|
|
|
|
|
|
|
4 |
0 |
4,294,967,295 |
|
|
|
|
|
|
|
|
unsigned long |
4 |
0 |
4,294,967,295 |
|
|
|
|
|
|
|
|
unsigned long long (C99) |
8 |
0 |
18,446,744,073,709,551,615 |
|
|
|
|
|
|
|
Важно наличие ключевого слова unsigned
Можно установить использование беззнаковых целочисленных типов без unsigned с помощью опций компилятора
В компиляторе Microsoft используется ключ /J
Определение размера переменной в байтах
size_t sizeof unary-expression
size_t sizeof ( type-name )
Пример
char s[] = "Hello, World!";
printf( "sizeof( char ): %d\n", sizeof( char ) );
printf( "sizeof( %s ): %d\n", s, sizeof( s ) );
Результат
sizeof( char ): 1
sizeof( Hello, World! ): 14
Часть 2
100110102 1 27 + 0 26 + 0 25 + 1 24 + 1 23 + 0 22 +
1 21 + 0 20 = 15410
Из BIN в HEX
Нужно разделить число на тетрады цифр (последовательности из четырёх цифр)
Преобразовать каждую тетраду в символ HEX
Собрать число из получившихся символов
Из HEX в BIN
Разделить число на отдельные символы
Преобразовать каждый символ в тетраду BIN
Собрать число из получившихся тетрад
1 = 1
10 = 2
11 = 3
100 = 4
101 = 5
110 = 6
111 = 7
1000 = 8
1001 = 9
1010 = A
1011 = B
1100 = C
1101 = D
1110 = E
1111 = F
Исходное число
10011010
Разбивка на тетрады
1001 1010
Преобразование каждой тетрады
1001 = 9 1010 = A
Преобразованное число
9A