КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Система представления чисел с фиксированной запятой. ⇐ ПредыдущаяСтр 2 из 2
Такую систему обозначают: P( b, t, f ). b – основание системы счисления; t – количество разрядов для записи числа; f - количество разрядов для записи дробной части.
Рассмотрим пример системы с фиксированной запятой Р(10, 4, 1); здесь b=10, t=4,f=1. мин. число, которое можно записать в этой системе = -999.9; макс число = +999.9; всего положительных чисел + нуль = 10 000; всего отрицательных чисел = 9 999 Любое число из [ -1000; 1000] представимо системе Р(10, 4, 1) с ошибкой £ 0.05 Пример: если x=865.54; его представление в P(10, 4, 1) обозначим как p(x)= 865.5. Ошибка = x-p(x) = 0.04. Относительная ошибка Е= ( x-p(x) ) /x = 0.04 / 865.54 = 0.005%. Если х = 0.86554 , р(х) = 0.9 è Е = 0.0398 .. = ~ 4% Вывод: система P(b, t, f) образует равномерную сетку , но относительная ошибка при записи чисел в этой системе не является равномерной. Система P( b, t, f ) используется в современных ЭВМ только для записи целых чисел в двоичной системе (со знаком и без знака), то есть b=2, f=0. Для записи целых чисел в современных компьютерах может отводиться, например, 8, 16, 32 бита (t =8, 16, 32). Отведённые биты нумеруются справа налево, начиная с нуля. Если целое число со знаком, то старший бит хранит знак числа: 0 соответствует знаку +, 1 указывает на отрицательное число. Пример: целые со знаком Р( 2, 8, 0). Для их записи требуется 8 бит. Вот как будет записано числ +75 = 26+23 +21+20 в 8-битовом коде: 0100 1011. Степень двойки в записи числа указывает на то, что соответствущий бит его двоичного представления содержит 1.
1*64+1*8+1*2+1 =75
Для записи отрицательных целых чисел используется дополнительный код. Правилодля записи отрицательного числа (-N) в дополнительном коде:записать двоичный кодсоответствующегоположительного целого N и дополнить его слева до нужного числа битов нулями ( до 8, или до 16, или до 32 битов). Затем нужно инвертировать полученный код (операция инверсии двоичного кода заключается в замене всех 0 на 1, и всех 1 на 0). После этого надо прибавить к младшему разряду инвертированного кода 1. Это и будет дополнительный код отрицательного числа (-N). Пример 1. Записать дополнительный 8 битовый код числа -95. Решение: запишем 95 в двоичном коде: 95 = 64+16+8 +4+2+1 = 101 1111. Дополним этот код слева нулём (чтобы получилось 8 бит): 0101 1111. Инвертируем полученный код : 1010 0000. Прибавим 1 к младшему разряду данного кода: 1010 0001. Это и будет дополнительный двоичный код числа -95. Для проверки сложим полученные коды: + 95 : 0101 1111 -95 : 1010 0001 (1) 0000 0000 - это ноль в 8-ми битовом представлении. Единица при переносе из восьмого бита теряется. Максимальное положительное 8-ми битовое число 0111 1111 = +127. Число 1000 0001 = -127. Минимальное отрицательное 8-ми битовое = 1000 0000 = -128. Т.е. диапазон однобайтовых целых чисел со знаком от -128 до +127. Всего можно представить 256 чисел. Для перевода отрицательных чисел из дополнительного кода поступаем также: инвертируем код отрицательного числа и прибавляем 1 к младшему разряду и получаем двоичный код соответствующего положительного числа. Пример2. Какое целое число со знаком записано в 8-ми битовом коде 1010 0011 ? Инвесия = 0101 1100; Прибавим 1 : 0101 1101. –> это число 26+24+23+22+20 = 64+16+8+4+1 = 93. Т.е. заданный код дополнительный код соответствует числу -93.
В качестве примера выпишем все возможные целые со знаком, если для их записи используется 4 бита:
Например, 3 è 0011 è инвертируем его: 1100 è прибавляем к нему 1 : 1101 = -3. Диапазон чисел в данной таблице: от -8 до 7. В компьютерах 4-х битовые числа не используются. Вычислим, например, 2 – 5 = 0010 +1011 = 1101 – это число (-3). В Turbo Pascal используются, например, такие целые типы : Byte = 1 байт без знака = 28 чисел = 0 .. 255 ShortInt = 1 байт со знаком = -128 .. 127 = от -27 до 27-1 Word = 2 байта без знака = 216 чисел = 0 .. 65 535 Integer = 2 байта со знаком (один бит под знак) = -32 768 .. 32 767 = - 216 .. +(216-1).
|