Системы счисления и представления типов данных
Системы счисления и представления типов данных Содержание - 1. Позиционные системы счисления 3
- 2. Переходы между основными системами счисления 5
- 3. Основные 16_ичные константы 5
- 4. Реализация целочисленных операций 7
- 5. Представление отрицательных чисел 8
- 6. Целочисленные типы данных в языке Си 9
- 7. Вещественные типы данных в языке Си 10
- 8. Кодирование символов 12
- 9. Схемы алгоритмов 14
1. Позиционные системы счисленияПозиционные системы счисления (СС) - это системы счисления, в которых количественный эквивалент каждой цифры зависит от ее положения (позиции) в записи числа. Например:1) шестидесятиричная (Древний Вавилон) - первая позиционная система счисления. До сих пор при измерении времени используется основание равное 60 (1 мин = 60 с, 1 ч = 60 мин);2) двенадцатеричная система счисления (широкое распространение получила в XIX в. Число12 - «дюжина»: в сутках две дюжины часов. Счет не по пальцам. а по суставам пальцев. На каждом пальце руки, кроме большого, по 3 сустава - всего 12;3) в настоящее время наиболее распространенными позиционными системами счисления являются десятичная, двоичная, восьмеричная и шестнадцатеричная.Система счисления - способ записи (изображения) чисел. Символы, при помощи которых записывается число, называются цифрами. Алфавитом системы счисления называется совокупность различных цифр, используемых в позиционной системе счисления для записи чисел. Например: Алфавиты некоторых позиционных систем счисления. Десятичная система: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}Двоичная система: {0, 1}Восьмеричная система: {0, 1, 2, 3, 4, 5, 6, 7}Шестнадцатеричная система: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}Количество цифр в алфавите равно основанию системы счисления. Основанием позиционной системы счисления называется количество знаков или символов, используемых для изображения числа в данной системе счисления.Базисом позиционной системы счисления называется последовательность чисел, каждое из которых задает количественное значение или «вес» каждого разряда. Например: Базисы некоторых позиционных систем счисления.Десятичная система: 100, 101, 102, 103, 104,…, 10n,…Двоичная система: 20, 21, 22, 23, 24,…, 2n,…Восьмеричная система: 80, 81, 82, 83, 84,…, 8n,…Свернутой формой записи числа называется запись в виде 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 = М | Мегабайт | | | Следующая таблица содержит популярные степени числа 2, а также их русские и английские названия.Таблица 2. Степени числа 2|
Показатель степени | Степень | Примечания | | 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 | | | Последние строки кратных единиц были дополнены ГОСТом в 1991. Вычисления с числами, представленными в десятично-буквенном виде, можно осуществлять без перехода в десятичную СС. Например, 32 Т / 256 К = 245 / 218 = 227 = 128 М.Таблицы 1 и 2 позволяют переводить 16_ичные числа в десятично-буквенную запись без применения вычислительных средств. Например, 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, а левая - нет. 5. Представление отрицательных чиселЦелые отрицательные числа хранятся в компьютере в двоичном «дополнительном» коде: положительное двоичное число необходимо побитово инвертировать и прибавить единицу.Этот код основан на простом соображении, что 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 … 64 K - 1 | | int, signed int | 2 | -32758 … 32757, -215 … 215 - 1, -32 K… 32 K - 1 | | unsigned long | 4 | 0… 232 - 1, 0… 4 M - 1 | | long | 4 | -231… 231 - 1, 0… 4 M - 1 | | |
Страницы: 1, 2
|