Лабораторная работа: Системы счисления и представления типов данных
Этот код основан на простом соображении, что x+ (-x) = 0 при сложении двоичных чисел столбиком. При этом единица, которая переходит из старшего 7‑го бита в несуществующий 8‑ой бит, пропадает. Например, для однобайтного числа x = 5 имеем
x = 5 = 0000 0101
+
– x = -5 = **** ****
____________________
0 = 0 = 0000 0000
Теперь конструируем число -5 = 1111 1011.
6. Целочисленные типы данных в языке Си
Таблица 3. Целочисленные типы данных
Название типа | Размер в байтах | Диапазон |
unsigned char | 1 |
0 … 255, 0. 28 -1 |
char, signed char | 1 |
-128 … 127, -27 … 27 -1 |
unsigned int | 2 | 0. 65535, 0. 216 -1, 0…64K–1 |
int, signed int | 2 | -32758 … 32757, -215 … 215 - 1, -32 K… 32 K– 1 |
unsignedlong | 4 | 0… 232 - 1, 0… 4 M– 1 |
long | 4 | -231… 231 - 1, 0… 4 M– 1 |
По умолчанию целые десятичные константы имеют тип int. Поэтому все целые числа должны содержаться в диапазоне -32758… 32757. Например, запись x = 100000 будет ошибочна независимо от типа переменной x. Для обозначения целой константы типа long используется суффикс l. Тогда инициализация longx = 100000l будет корректна.
Компилятор не проверяет выход результата целочисленного выражения за диапазон типа. Запись longx = 20000 + 20000 будет ошибочна, так как 40000 не содержится в диапазоне типа int. Это будет «хорошо скрытая» ошибка. Реально x будет содержать значение
40000 – 64 К. Запись longx = 20000l + 20000 будет уже корректна, так как результат будет иметь уже тип long.
Построим область корректного сложения для типа char.
char x, y, z;
x = y = 100;
z = x + y;
Нарисуем в системе координат (x, y) множество, для которого z будет содержать корректный ответ. Имеем систему
решением которой является шестиугольник.
Рис. 1. Диапазон корректного сложения
7. Вещественные типы данных в языке Си
Вещественные типы всегда имеют знак.
Определение 3 . Нормализованной формой ненулевого числа x называется запись x = M×10p , где M– мантисса, 0,1 £½M½ < 1, p – порядок числа х.
Нормализованная форма числа единственна.
Таблица 4. Вещественные типы данных
Название типа | Размер в байтах | Размер мантиссы в десятичных знаках | Размер порядка в битах | Диапазон |
float | 4 | 7–8 | 8 | 3,4×10-38 … 3,4×1038 |
double | 8 | 15–16 | 11 | 1,7×10-3 0 8 … 1,7×103 0 8 |
longdouble | 10 | 19–20 | 15 | 3,4×10-4932 … 1,1×104932 |
Определение 4 . Машинным нулем для данного вещественного типа называется минимальное положительное число того же типа
m0 = min {x: x > 0}.