Системы счисления и представления типов данных
Обновлено
Системы счисления и представления типов данных
Содержание
- 1. Позиционные системы счисления 3
- 2. Переходы между основными системами счисления 5
- 3. Основные 16_ичные константы 5
- 4. Реализация целочисленных операций 7
- 5. Представление отрицательных чисел 8
- 6. Целочисленные типы данных в языке Си 9
- 7. Вещественные типы данных в языке Си 10
- 8. Кодирование символов 12
- 9. Схемы алгоритмов 14
Свернутой формой записи числа называется запись в виде
A=an-1an-2…a1a0.a-1…a-m
Именно такой формой записи чисел мы и пользуемся в повседневной жизни. Иначе свернутую форму записи называют естественной или цифровой.
Пример. Десятичное число 4718,63, двоичное число 1001,1, восьмеричное число 7764,1, шестнадцатеричное число 3АF16
Позиция цифры в числе называется разрядом: разряд возрастает справа налево, от младших к старшим, начиная с нуля. В позиционной системе счисления любое вещественное число в развернутой форме может быть представлено в следующем десятичном виде:
А = ± (an-1qn-1+an-2qn-2+ … +a0q0+a-1q-1+a-2q-2+ … +a-mq-m)
Здесь А - само число, q - основание системы счисления, ai - цифры, принадлежащие алфавиту данной системы счисления, n - число целых разрядов числа, m - число дробных разрядов числа. Развернутая форма записи числа - сумма произведений коэффициентов на степени основания системы счисления.
Пример. Десятичное число А10 = 4718,63 в развернутой форме запишется так:
А10 = 4·103 + 7·102 + 1·101 + 8·100 + 6·10-1 + 3·10-2
Двоичное число А2 = 1001,1 = 1·23 + 0·22 + 0·21 + 1·20 + 1·2-1
Восьмеричное число А8 = 7764,1 = 7·83 + 7·82 + 6·81 + 4·80 + 1·8-1
Шестнадцатеричное число А16 = 3АF16 = 3·162 + 10·161 + 15·160
2. Переходы между основными системами счисленияОсновные СС имеют основания 2, 8,10, 16. Системы с основаниями 2, 8 и 16 являются родственными, так как их основания являются степенями двойки. Переходы между ними реализуются легко.2 8. Двоичное число разбивается справа налево на триады (тройки цифр) и каждая триада заменяется на 8_ичную цифру.2 16. Двоичное число разбивается справа налево на тетрады (четверки цифр) и каждая тетрада заменяется на 16_ичную цифру.8 16 и 16 8. Преобразование идет через двоичную СС.Любое основание 10. Осуществляется по определению позиционной системы счисления.10 16. Имеется два способа преобразования.1. Метод деления «уголком» строит результирующее 16_ичное число от младших цифр к старшим. Для этого запоминаются целые остатки от деления исходного числа на 16, пока частное не станет равным 0. Записывая эти остатки в обратном порядке, получим ответ.2. Метод «вычерпывания» состоит из нескольких итераций. На каждой итерации исходное число х оценивается снизу максимальной степенью m нового основания p = 16: х ? 16m. Затем определяем число r вхождений степени 16m в число х. Наконец, 16_ичную цифру r записываем в результирующее число в разряд с номером m. Число x заменяем на меньшее число х - r · 16m. Если новое число х = 0, то алгоритм заканчивается, и остальные разряды результата заполняем нулями. В противном случае, переходим к следующей итерации.3. Основные 16_ичные константыБольшинство числовых констант, которые встречаются в компьютерной технике, являются круглыми шестнадцатеричными числами. Эти числа обычно записывают в десятично-буквенном виде, имеющем формат ab, где а - десятичное число, b - буква.Таблица 1. Шестнадцатеричные константы16_ичная константа | Десятично-буквенное значение | Примечания | |
0х10 | 24 = 16 | Размер параграфа | |
0х100 | 28 = 256 | Размер физического сектора | |
0х200 | 512 | Размер кластера на дискете | |
0х400 | 210 = 1024 = К | Килобайт | |
0х1000 | 4 К | ||
0х10000 | 64 К | Размер сегмента | |
0хА0000 | 640 К | Верхняя граница ОЗУ для размещения исполняемого кода в DOS | |
0х100000 | 220 = М | Мегабайт |
Показатель степени | Степень | Примечания | |
0 | 1 | ||
1 | 2 | ||
2 | 4 | ||
3 | 8 | ||
4 | 16 | ||
5 | 32 | ||
6 | 64 | ||
7 | 128 | ||
8 | 256 | ||
9 | 512 | ||
10 | К = 1024 103, К | Килобайт, Kilobyte | |
20 | М = К·К = К2 106, М | Мегабайт, Megabyte | |
30 | Г = К3 109, G | Гигабайт, Gigabyte | |
40 | Т = К4 = М2 1012, T | Терабайт, Terabyte | |
50 | П 1015, P | Петабайт, Petabyte | |
60 | Э 1018, E | Экзабайт, Exabyte | |
70 | З 1021, Z | Зетабайт, Zettabyte | |
80 | Й 1024, Y | Йотабайт, Yottabyte |
0х7D8A30 = 7·0x100000 + 13·0x10000 + 8·0x1000 + 10·0x100 + 3·16 = 7 M + 13·64 K + 8·4 K + 10·(K/4) + 48 = 7 M + 866,5 K + 48.Отметим, что для десятично-буквенных чисел не выполняется дистрибутивный закон, то есть 1 М + 100 К не равен 1,1 М.4. Реализация целочисленных операцийПредставление чисел в компьютере осуществляется в двоичной СС. Однако для краткости записи чисел используют родственную 16_ичную СС.Определение 1. Логическим адресом ячейки памяти в ОЗУ с 20_битной адресной шиной называется запись xxxx:yyyy, где хххх - шестнадцатеричный сегментный адрес, yyyy - шестнадцатеричное смещение. Физическим адресом этой ячейки называется число xxxx0 + yyyy.Пример. Область кода программы расположена с ячейки 55А3:3000 по ячейку 9EEF:A0FF. Оценить размер области в килобайтах.Решение. Физический адрес начала области 0х55А30 + 0х3000 = 0х58A30, конца области 0х9EEF0 + 0хA0FF = 0хA8FEF. Размер этой области равен 0хA8FEF - 0х58A30 + 1 = 0x505C0 = 5·64 К + 0·4 К + 10· (К/4) + 12·16= (320 + 2,5) К + 192 = 322,5 К + 192.Определение 2. Нормализованным адресом ячейки памяти ОЗУ с 20_битной адресной шиной называется запись xxxx:yyyy, где хххх - шестнадцатеричное число, yyyy - шестнадцатеричное смещение, не превосходящее размера параграфа, то есть из диапазона от 0 до 15.Арифметические операции сложения, вычитания, умножения и деления с 16_ичными числами осуществляются аналогично 10_ичным числам, то есть «столбиком». Однако, имеются некоторые отличия.Пример. Критерии деления 16_ичного целого числа на 3 и на 5 выглядят одинаково: сумма цифр должна делится, соответственно, на 3 и на 5.Пример. Оказывается в 16_ичной СС 0x112 = 0x121, 0x122 = 0x144, 0x132 = 0x169.
Пример. Десятичное число 0,1 нельзя представить в виде конечной 2_ичной дроби A = 0, a-1…a-m = a-12-1 + a-22-2 +… + a-m2-m. В противном случае, умножая равенство 0,1 = А на 10·2m, получим 2m = 10·(a-12m-1 +
a-22m-2 +… + a-m20). Последнее равенство невозможно, так как правая часть делится на 5, а левая - нет.
Название типа | Размер в байтах | Диапазон | |
unsigned char | 1 | 0 … 255, 0. 28 - 1 | |
char, signed char | 1 | -128 … 127, -27… 27-1 | |
unsigned int | 2 | 0. 65535, | |
int, signed int | 2 | -32758 … 32757, | |
unsigned long | 4 | 0… 232 - 1, | |
long | 4 | -231… 231 - 1, |
40000 - 64 К. Запись long x = 20000l + 20000 будет уже корректна, так как результат будет иметь уже тип long.Построим область корректного сложения для типа char.char x, y, z;x = y = 100;z = x + y;Нарисуем в системе координат (x, y) множество, для которого z будет содержать корректный ответ. Имеем системурешением которой является шестиугольник.Рис. 1. Диапазон корректного сложения7. Вещественные типы данных в языке СиВещественные типы всегда имеют знак.Определение 3. Нормализованной формой ненулевого числа x называется запись x = M10p, где M - мантисса, 0,1 M < 1, p - порядок числа х.Нормализованная форма числа единственна.Таблица 4. Вещественные типы данных
Название типа | Размер в байтах | Размер мантиссы в десятичных знаках | Размер порядка в битах | Диапазон | |
float | 4 | 7-8 | 8 | 3,410-38 … 3,41038 | |
double | 8 | 15-16 | 11 | 1,710-308… 1,710308 | |
long double | 10 | 19-20 | 15 | 3,410-4932… 1,1104932 |
Основная таблица ASCII | Расширенная таблица ASCII | |
`\xxx' - это код символа, у которого код равен ххх.Примеры. 1. Количество букв в английском алфавите равно
`Z' - `A' + 1.2. Количество букв в русском алфавите равно `Я' - `А' + 2.9. Схемы алгоритмовДля облегчения вычерчивания и нахождения на схеме символов рекомендуется поле листа разбивать на зоны. Размеры зон устанавливают с учетом минимальных размеров символов, изображенных на данном листе. Допускается один символ размещать в двух и более зонах, если размер символа превышает размер зоны. Координаты зоны проставляют: по горизонтали - арабскими цифрами слева направо в верхней части листа; по вертикали - прописными буквами латинского алфавита сверху вниз в левой части листа. Координаты зон в виде сочетания букв и цифр присваивают символам, вписанным в поля этих зон, например: A1, A2, A3, B1, B2, B3 и т.д. Если поле листа не разбито на зоны, символам присваивают порядковые номера.Линии потока должны быть параллельны линиям внешней рамки схемы. Направления линий потока сверху вниз и слева направо принимают за основные и, если линии потока не имеют изломов, стрелками можно не обозначать. В остальных случаях направление линии потока обозначать стрелкой обязательно.Сокращения слов и аббревиатуры, кроме стандартных и общепринятых, должны быть расшифрованы в нижней части поля схемы или в документе, к которому эта схема относится. Записи внутри символа должны быть представлены так, чтобы их можно было читать слева направо и сверху вниз, независимо от направления потока. (вид а должен быть прочитан как вид б).Рис. 2. Эквивалентные фрагменты схемы алгоритмаТаблица 6. Соединитель
Обозначение | Комментарии | Использование | |
E5, B1, A, 5 - идентификаторы соединителей в виде: | При большой насыщенности схемы символами отдельные линии потока между удаленными друг от друга символами допускается обрывать. При этом в конце (начале) обрыва должен быть помещен символ «Соединитель» | ||
буквы | |||
цифры |
Обозначение | Комментарии | Использование | |
Первая строка внутри межстраничного соединителя определяет номер листа схемы, вторая - координату символа | а) связываемые линией потока символы находятся на разных листах | ||
A3 - определяет зону на данном листе, где расположен символ «Комментарий» 010E3 - определяет номер листа и зону расположения, связываемую с символом E3 | б) в случае связи некоторого символа со многими другими символами, расположенными на разных листах, на входе этого символа помещают один символ «Межстраничный соединитель», внутри которого на первой строке помещают знак #, а на второй строке - координаты символа «Комментарий». Внутри символа «Комментарий» указывают номера страниц и координаты символов, связанных с поясняемым символом |
Обозначение | Комментарии | Использование | |
Применяют для указания направления линии потока: можно без стрелки, если линия направлена слева направо и сверху вниз; со стрелкой - в остальных случаях | |||
Излом линии потока под углом 90о | Обозначает изменение направлений линии потока | ||
Пересечение линий потока | Применяется в случае пересечения двух несвязанных линий потока | ||
Слияние линий потока. Место слияний линий потока обозначено точкой | Применяется в случае слияния линий потока, каждая из которых направлена к одному и тому же символу на схеме. Место слияния линий потока допускается обозначать точкой или цифрой 0. | ||
Место слияний линий потока обозначено цифрой 0 |
Обозначение | Комментарии | Использование | |
| A = B, P ? 0 - условия решений; A, B, P - параметры | При числе исходов не более трех признак условия решения (Да, Нет, =, >, <) проставляют над каждой линией потока или справа от линии потока | ||
| yi - условие i_го исхода, 011T1, 016A3, 005B5, 015T4 - адреса исходов.Структура адреса имеет вид: | При числе исходов более трех условие исхода проставляется в разрыве линии потока. Адрес исхода проставляется в продолжении условия исхода и отделяется от него пробелом | ||
B5 - знак, указывающий, что условия решения даются в виде таблицы или символа «Комментарий», расположенных на данном листе в зоне B5 | в символе «Соединитель» указывают координату зоны, куда должна помещаться таблица или символ «Комментарий» |
Название символа | Обозначение | Использование | |
1. Процесс | Выполнение операции или группы операций, в результате которых изменяется значение, форма представления или расположение данных | ||
2. Решение | Выбор направления выполнения алгоритма или программы в зависимости от некоторых переменных условий | ||
3. Модификация | Выполнение операций, меняющих команды, или группы команд, изменяющих программу | ||
4. Предопреде | Использование ранее созданных и отдельно описанных алгоритмов или программ | ||
5. Ручной ввод | Ввод данных вручную при помощи неавтономных устройства с клавиатурой, переключателей, кнопок | ||
6. Ввод-вывод | Преобразование данных в форму, пригодную для обработки (ввод) или отображения результатов обработки (вывод) | ||
7. Документ | Ввод-вывод данных, носителем которых служит бумага | ||
8. Файл | Представление организованных на основе общих признаков данных, характеризующих в совокупности некоторый объект обработки данных. Символ используется в сочетании с символами конкретных носителей данных, выполняющих функции ввода-вывода. | ||
9. Линия потока | Указание последовательности связей между символами | ||
10. Соединитель | Указание связи между прерванными линиями потока, соединяющими символы | ||
11. Пуск-останов | Начало, конец, прерывание процесса обработки данных или выполнения программы | ||
12. Комментарий | Связь между элементом схемы и пояснением | ||
13. Межстраничный соединитель | Указание связи между разъединенными частями схем алгоритмов и программ, расположенных на разных листах |
