Представление чисел в компьютере • • • • • Позиционные и непозиционные СС Приемы перевода чисел из одной СС в другую Числа с фиксированной точкой Числа с плавающей точкой Особенности представления вещественных чисел в ЭВМ Система счисления (СС) – совокупность приёмов и правил для изображения чисел с помощью символов, имеющих определённые количественные значения. однородные смешанные В римской СС узловыми являются числа: алгоритмические числа В церковнославянском языке для записи чисел использовались буквы: Числа от 11 до 19: на первом месте – буква, обозначающая единицы, а на втором буква і, имеющая цифровое значение «десять», например: а҃і =11 в҃і = 12 г҃і =13 Числа от 21 и далее: сначала пишется буква, обозначающая десятки, потом буква, обозначающая единицы, например: к҃з = 27 н҃г = 53 ѻ҃а = 71 КЕ = 25 Тысячи обозначаются знаком ҂, который может присоединяться к любой букве, ниже уровня строки, например: ҂в҃ = 2.000 ҂ѳ҃ = 9.000 ҂ѯ҃ = 60.000 ҂ф҃ = 500.000 Позиционная система • Примеры: 535.15 3433.537 • Основание СС = количество цифр СС • Основание СС - количество единиц младшего разряда, которое равно одной единице соседнего старшего разряда • 2сс обозначается Bin • 8сс обозначается Oct • 16сс обозначается Hex 5 Примеры чисел в 3сс: • Троичная система счисления: основание = 3 • используются три цифры {0,1, 2} • Примеры чисел: 2113 102.213 • В троичной системе 1+2=10 (три в десятичной) 10+1=11 11+1=12 12+1=20 (в десятичной 5+1 = 6) 6 Однородная СС — для всех разрядов (позиций) числа набор допустимых символов (цифр) одинаков (н-р 10сс). Смешанная позиционная система счисления — в каждом разряде (позиции) числа набор допустимых символов (цифр) может отличаться от наборов других разрядов. Яркий пример — система измерения времени: • в разряде секунд и минут возможно 60 различных символов (от «00» до «59»), • в разряде часов – 24 разных символа (от «00» до «23»), • в разряде суток – 365 и т. д. Общее правило для изображения чисел в позиционной системе счисления • Задано основание системы счисления – натуральное B >1 • Заданы цифры (алфавит) системы счисления M ={A1, A2, …, AB} Позицонная запись числа Х: или где для всех k от –n до m 8 Пример: Для десятичной системы счисления с основанием В=10 и М={0,1,2,3,4,5,6,7,8,9}, запись для X= 3269.721 означает, что 9 Первые 16 натуральных чисел в 2сс: Основание позиционной СС – это количество единиц младшего разряда, переходящее в единицу старшего соседнего разряда. 10 Восьмеричная сс: 8 сс 7+1=10 10+1=11 11+1=12 12+1=13 Dec 8 9 10 11 8 cc 13+1=14 14+1=15 15+1=16 16+1=17 17+1=20 Dec 12 13 14 15 16 11 16 сс: • В 16сс используются 16 цифр • первые десять – это 0, 1, 2,… 9, • недостающие цифры изображают с помощью букв A, B, C, D, E, F: • A= 9+1 (10), B=A+1 (11) , C=B+1 (12), • D=C+1 (13), E=D+1 (14), F=E+1 (15), • F+1=1016. 12 Сводная таблица (первые 16 натуральных) 10 сс 2 сс 8 сс 16 сс 0 0000 00 0 1 0001 01 1 2 0010 02 2 3 0011 03 3 4 0100 04 4 5 0101 05 5 6 0110 06 6 7 0111 07 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F 13 Перевод из 2сс 10сс 7 6 5 4 3 2 1 0 -1 -2 -3 Пример 1: 1 1 1 0 0 1 0 1 .1 0 1 = 1* 2 7 1* 2 6 1* 2 5 0 * 2 4 0 * 2 3 1* 2 2 0 * 21 1* 2 0 1* 2 1 0 * 2 2 1* 2 3 128 64 1 1 5 32 + 4 + 1 + + 229 2 8 8 14 Перевод из 10сс в 2сс числа 58.73 Переводим целую часть: r – частное; q - остаток • 58 : 2 = 29 (0) • 29 : 2 = 14 (1) • 14 : 2 = 7 (0) • 7 : 2 = 3 (1) • 3: 2 = 1 (1) • 1 : 2 = 0 (1) 58 = 1110102 r = 29, q = 0 r = 14, q = 1 r = 7, q = 0 r = 3, q = 1 r = 1, q = 1 r = 0, q = 1 (Stop) 15 Переводим дробную часть числа 58.73 r – целая часть; q – дробная часть • 0. 73 * 2 = 1. (46 ) • 0. 46 * 2 = 0. (92 ) • 0. 92 * 2 = 1. (84 ) • 0. 84 * 2 = 1. (68 ) • 0. 68 * 2 = 1. (36 ) • и так далее • 0.73 ≈ 0.10111… r =1, q= 0.46 r =0, q= 0.92 r =1, q= 0.84 r =1, q= 0.68 r =1, q= 0.36 Ответ: 58.73 = 111010.10111…2 16 Пример 2: 17 Если знаменатель дроби является степенью основания СС Пример 3: Записать в двоичной системе дроби 3/4, 5/8, 13/16: • 3 = 112, 4 = 1002 3/4 = (11/100)2 = 0.11 • 5 = 1012, 8 =10002 5/8 = (101/1000)2 = 0.101 • 13 = 11012, 16 = 100002 13/16 = (1101/10000)2 = 0.1101 18 Техника перевода чисел из Hex в Dec такая же, как и в случае перевода из Bin в Dec. Пример 5. Перевести десятичное число 332 в Hex. Переведём дробь 0.13 в Hex: Примеры перевода из 10сс в 16сс Для перевода чисел из 2сс в 16сс применяется следующий приём: 1. Двоичную запись числа надо разбить на группы цифр по 4 (на тетрады), начиная от разделителя влево и вправо (если число дробное). 2. Левую и правую тетрады дополняем, если надо, нулями. 3. Каждую двоичную тетраду нужно заменить на соответствующую цифру в 16сс, используя таблицу. 111011001.110111 = 1 1101 1001 . 1101 11 = = 0001 1101 1001 . 1101 1100 = = 1 D 9 . D C 23 Пример: из 2сс в 16сс: 111011001.110111 = 1 1101 1001 . 1101 11 = = 0001 1101 1001 . 1101 1100 = = 1 D 9 . D C 24 Перевод из 16сс в 2сс: каждую цифру числа, записанного в 16сс, нужно заменить на соответствующую двоичную тетраду из таблицы: A7C.2F = 1010 0111 1100. 0010 1111 A 7 C 2 F 25 2сс 8cc и наоборот: 1) Разбиваем двоичную запись на триады; 2) каждую триаду заменяем на восьмеричную цифру: 11101 = 011 101 = 358 Из 8сс в 2сс: 428 = 100 010 26 Числа с фиксированной точкой Систему с фиксированной запятой обозначают как P( b, t, f), где b – основание системы счисления, t – количество разрядов для записи числа, f - количество разрядов для записи дробной части. Пример: Р(10, 4, 1) • Dec • общее количество разрядов для записи числа равно 4 • под дробную часть отводится 1 знак min = -999.9 max = 999.9 27 Числа с фиксированной точкой Пример: Р(10, 4, 1) • Dec • общее количество разрядов числа равно 4 • под дробную часть отводится 1 знак • min = -999.9 max = 999.9 • всего положительных чисел с нулём 10000 • всего отрицательных чисел 9 999 • Любое число из [ -1000; 1000] представимо в системе Р(10, 4, 1) с ошибкой <= 0.05 28 Числа с фиксированной точкой • Система с фиксированной запятой P( b, t, f ) используется в современных ЭВМ только для записи целых чисел (со знаком и без знака) в двоичной системе • то есть при b = 2, f = 0 • t может равняться 8, 16, 32 30 Целые числа без знака • целые без знака в системе Р( 2, 8, 0): • биты нумеруются справа налево, начиная с нуля: 7 6 5 4 3 2 1 0 10100110= 1* 27 0 * 26 1* 25 0 * 2 4 0 * 23 1* 2 2 1* 21 0 * 2 0 128 32 4 2 166 31 Целые числа со знаком Числа с фиксированной точкой Целые co знаком • старший бит хранит знак: 0 для «+»; 1 для «-» • для записи отрицательных чисел используется дополнительный код Правило получения дополнительного кода отрицательного числа (-N) : 1) записываем двоичный код числа (+N) и дополняем его слева до нужного числа битов (8, 16, 32) 2) делаем инверсию полученного кода (замену всех 0 на 1 и всех 1 на 0) 3) прибавляем 1 к младшему разряду Полученный код и будет дополнительным кодом отрицательного числа (-N). 33 Примеры целых со знаком • Записать дополнительный 8 битовый код числа -95. 1) 95 в двоичном коде: 95 = 64+16+8 +4+2+1 = 101 1111 2) Дополним этот код слева нулём до 8 бит: 0101 1111 3) Сделаем инверсию: 1010 0000 4) Прибавим 1 к младшему разряду 1010 0001 - это и будет дополнительный двоичный код отрицательного числа -95 5) Проверим: 34 8 –ми битовые со знаком • Максимальное положительное 0111 1111 = +127. • 1000 0001 = -127. • Минимальное отрицательное 1000 0000 = -128. • Диапазон однобайтовых целых со знаком от -128 до +127. • Всего с помощью 8-ми бит можно представить 256 чисел, т.е. 28. 35 Правило получения целого десятичного числа со знаком из дополнительного кода Целые типы данных в Pascal Теорема: Максимальное целое (без знака), которое можно записать с помощью n бит равно 2n -1. Доказательство: x 111.......1 x 1 1000.......0 2 x= 2n -1. n раз n n раз 40 Как интерпретировать данные? Например: 1001 1101 Если это число типа Byte, то оно равно 27+24+23+22+20= 128+16+8+4+1=157. Если это целое число со знаком типа ShortInt, то для его определения надо инвертировать код: 0110 0010, затем прибавить 1: получим 0110 0011, т.е. 26+25+21+20= 64+32+2+1 = 99, значит, данный байт содержит число - 99. Как интерпретировать данные? Например: 1001 1101 Если это число типа Byte, то оно равно 27+24+23+22+20= 128+16+8+4+1=157. Если это целое число со знаком типа ShortInt, то для его определения надо инвертировать код: 0110 0010, затем прибавить 1: получим 0110 0011, т.е. 26+25+21+20= 64+32+2+1 = 99, значит, данный байт содержит число - 99. Для правильной интерпретации содержимого памяти нужно знать, какой тип данных в ней храниться, т.к. по «внешнему виду» отличить один тип от другого нельзя. Примеры (8 битовые) 1)Целые без знака: 0110 1010 0100 1001 1011 0011 (106) (73) (179) 2)Оба положительные: 0110 1010 (106) 0100 1001 (73) 1011 0011 (-77) Ошибка!(был перенос в знаковый бит) 43 Примеры (8 битовые) 3)Оба отрицательные: 1101 0110 (-42) 1100 0101 (-59) 1 1001 1011 (-101)верно был перенос и переполнение. 4)Разных знаков: 0110 1010 (106) 1100 1001 (-55) 1 0011 0011 (51) Верно! ( был перенос и перепол.) 44 Индикаторы переноса и переполнения (признаки правильного результата) операнды индикатор переноса (из знак. бита) индикатор переполнения (пер. в знак. бит) оба без знака нет есть или нет + и + нет - и - есть есть + и - есть есть 45 Экспоненциальная запись числа — это представление действительных чисел в виде мантиссы и порядка. Удобна для представления очень больших и очень малых чисел, а также для унификации их написания. Система представления чисел с плавающей точкой F(b, t, L, U) b – основание системы, t – количество разрядов мантиссы, L , U – пределы изменений значений показателей порядка чисел в этой системе. Числа имеют экспоненциальный вид: x = ≤ M * bk , где M – мантисса числа x, b – основание системы счисления, k – порядок числа x. 31562.781 = 0.31562781*105 порядок мантисса числа характеристика числа (экспонента, т.е. основание, возведенное в степень) Число с плавающей точкой b – основание системы, t – количество разрядов мантиссы, L , U – пределы изменений значений показателей порядка чисел в этой системе. b – основание системы, t – количество разрядов мантиссы, L , U – пределы изменений значений показателей порядка чисел в этой системе. b – основание системы, t – количество разрядов мантиссы, L , U – пределы изменений значений показателей порядка чисел в этой системе. • Нормальной формой числа называется такая форма, в которой мантисса (без учёта знака) находится на полуинтервале [0,1), то есть 0<= M < 1. • Такая форма записи имеет недостаток: некоторые числа записываются неоднозначно . • Например, 0,0001 можно записать как 0,000001*10², 0,00001⋅10¹, 0,0001⋅10º, 0,001⋅10ˉ¹ ….. • Потому распространена другая форма записи — нормализованная, в которой мантисса десятичного числа принимает значения от 1 (включительно) до 10 (исключая), то есть 1<= M < 10 . • Мантисса двоичного числа принимает значения от 1 до 2. Пример 1. Запишем десятичное число 1 015 000 в экспоненциальном нормализованном виде. • Основание будет 10. • Выделим мантиссу. Для этого представим число в виде дроби, дробная часть которой будет равна, соответственно, нулю (так как число целое): 1000000.0. Если целая часть числа больше 0, то двигаем точку влево от ее начального положения (внутрь целой части) до тех пор, пока в целой части не останется одна-единственная цифра. После нее ставим точку. Отбрасываем незначимые нули (на конце числа). Получаем мантиссу числа, равную 1.015. • Определим степень (порядок) основания числа. На сколько позиций влево сдвинулась наша разделяющая целую и дробную части точка? На шесть позиций. Значит, порядок будет равен 6. При этом порядок положительный ( двигали точку в целой части числа, не равной 0). Итоговая запись в нормализованном виде: 1.015 * 10⁶. Мы можем записать это число и в таком варианте: 1.015 Е6 (где Е6 - это экспонента десятичного числа, то есть 10 в 6 степени). Структура представления вещественных чисел в ЭВМ имеет следующий вид Например Так как в нормализованной мантиссе двоичного числа в первой позиции всегда стоит единица, то хранят мантиссу, начиная со второго знака, например: Хранение двоичного числа с плавающей точкой Например, в языке TurboPascal существуют следующие типы данных для хранения вещественных чисел Теория действительных (вещественных) чисел была создана во второй половине XIX века в работах К. Вейерштрасса, Э. Гейне, Р. Дедекинда, Г. Кантора, Ш. Мере. Действительные (вещественные) числа R — это все числа, которые можно представить на числовой прямой. К ним относятся: 1. Натуральные числа (N) — которые используются во время порядкового счёта: 1, 2, 3, 4, 5, …. 2. Целые числа (Z) — все натуральные числа, отрицательные числа и ноль: … −3, −2, −1, 0, 1, 2, 3, 4, 5, …. 3. Рациональные числа (Q) — дроби, которые можно записать как отношения двух целых чисел: ½; 0,5; −0,3333; -20/5 … 4. Иррациональные числа (I) — это числа с бесконечным не повторяющимся значением после запятой — например, числа π, √2, е, ….. Выводы: 1. Множество действительных чисел значительно отличается от множества рациональных чисел, с которыми мы имеем дело в ЭВМ. 2. Числовая система ЭВМ является конечной и цикличной. 3. Для чисел, представленных в ЭВМ, можно указать наибольшее по модулю число А, такое, что все остальные числа будут меньше А. 4. Неточный перевод действительных чисел в двоичную систему и конечность разрядов, выделяемых для хранения чисел, служат источниками систематических ошибок при реализации вычислительных методов на ЭВМ. 5. Требуется теория «машинных» действительных чисел. 6. Для хранения отрицательных чисел используют дополнительный и обратный коды, которые упрощают работу процессора. 7. Обработка числовой информации в процессоре зависит от длины машинного слова, при этом старший бит машинного слова является знаковым.