КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Представление чисел в компьютереЧисловые данные обрабатываются в компьютере в двоичной системе счисления. Числа хранятся в оперативной памяти в виде последовательностей нулей и единиц, т.е. в двоичном коде. Представление чисел в формате с фиксированной запятой. Целые числа в компьютере хранятся в памяти в формате с фиксированной запятой. В этом случае каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа, а запятая находится справа после младшего разряда, т.е. вне разрядной сетки. Для хранения целых неотрицательных чисел отводится одна ячейка памяти (8 бит). Например, число A2 = 101010102 будет хранится в ячейке памяти следующим образом: Максимальное значение целого неотрицательного числа достигается в случае, когда во всех ячейках хранятся единицы. Для n-разрядного представления оно будет равно: 2n - 1 Пример 26. Определить диапазон чисел, которые могут хранится в оперативной памяти в формате целое неотрицательное число. Минимальное число соответствует восьми нулям, хранящимся в восьми ячейках памяти, и равно нулю. Максимальное число соответствует восьми единицам, хранящимся в ячейках памяти и равно: A = 1E27 +1E26 +1E25 + 1E24 + 1E23 + 1E22 + 1E21 + 1E20 = 1E28 – 1 = 25510 Диапазон изменения целых неотрицательных чисел от 0 до 255. Для хранения целых чисел со знаком отводится две ячейки памяти (16 бит), причем старший (левый) разряд отводится под знак числа (если число положительное, то в знаковый разряд записывается 0, если число отрицательное записывается 1). Представление в компьютере положительных чисел с использованием формата «знак-величина» называется прямым кодом числа. Например, число 200210 = 111110100102 будет представлено в 16-ти разрядном представлении следующим образом: При представлении целых чисел в n-разрядном представлении со знаком максимальное положительное число (с учетом выделения одного разряда на знак) равно: A = 2n-1 - 1 Пример 27. Определить максимальное положительное число, которое может хранится в оперативной памяти в формате целое число со знаком. A10 = 215 – 1 = 3276710 Для представления отрицательных чисел используется дополнительный код. Дополнительный код позволяет заменить арифметическую операцию вычитания операцией сложения, что существенно упрощает работу процессора и увеличивает его быстродействие.
Дополнительный код представляет собой дополнение модуля отрицательного числа А до 0, поэтому в n-разрядной компьютерной арифметике: 2n - |A| + |A| ≡ 0 Это равенство тождественно справедливо, т.к. в компьютерной n-разрядной арифметике 2n ≡ 0. Действительно, двоичная запись такого числа состоит из одной единицы и n нулей, а в n-разрядную ячейку может уместиться только n младших разрядов, т.е. n нулей. Пример 28. Записать дополнительный код отрицательного числа –2002 для 16-ти разрядного компьютерного представления. Проведем вычисления в соответствии с определением дополнительного кода:
Проведем проверку с использованием десятичной системы счисления. Дополнительный код 6353410 в сумме с модулем отрицательного числа 200210 равен 6553610, т.е. дополнительный код дополняет модуль отрицательного числа до 216 (до нуля 16-ти разрядной компьютерной арифметики). Для получения дополнительного кода отрицательного числа можно использовать довольно простой алгоритм: 1. Модуль числа записать прямым кодом в n двоичных разрядах; 2. Получить обратный код числа, для этого значения всех бит инвертировать (все единицы заменить на нули и все нули заменить на единицы); 3. К полученному обратному коду прибавить единицу. Пример 29. Записать дополнительный код отрицательного числа –2002 для 16-ти разрядного компьютерного представления с использованием алгоритма.
При n-разрядном представлении отрицательного числа А дополнительным кодом старший разряд выделяется для хранения знака числа (единицы). В остальных разрядах записывается положительное число: 2n-1 - |A|. Чтобы число было положительным должно выполняться условие: |A| ≤ 2n-1 Следовательно, максимальное значение модуля числа А в n-разрядном представлении равно: |A| = 2n-1 Тогда, минимальное отрицательное число равно: A = -2n-1 Пример 30. Определить диапазон чисел, которые могут хранится в оперативной памяти в формате больших целых чисел со знаком (для хранения таких чисел отводится четыре ячейки памяти - 32 бита). Максимальное положительное целое число (с учетом выделения одного разряда на знак) равно: A = 231 – 1 = 2 147 483 64710 Минимальное отрицательное целое число равно: A = -231 = -2 147 483 64810 Достоинствами представления чисел в формате с фиксированной запятой являются простота и наглядность представления чисел, а также простота алгоритмов реализации арифметических операций (вычитание благодаря использованию дополнительного кода для представления отрицательных чисел сводится к сложению). Пример 31. Выполнить арифметическое действие 300010 - 500010 в 16-ти разрядном компьютерном представлении. Представим положительное число в прямом, а отрицательное число в дополнительном коде:
Сложим прямой код положительного числа с дополнительным кодом отрицательного числа. Получим результат в дополнительном коде:
Переведем полученный дополнительный код в десятичное число: 1) Инвертируем дополнительный код: 0000011111001111 2) Прибавим к полученному коду 1 и получим модуль отрицательного числа: + 0000000000000001 3) Переведем в десятичное число и припишем знак отрицательного числа: Недостатком представления чисел в формате с фиксированной запятой является конечный диапазон представления величин, недостаточный для решения математических, физических, экономических и других задач, в которых используются как очень малые, так и очень большие числа. Представление чисел в формате с плавающей запятой. Вещественные числа (конечные и бесконечные десятичные дроби) хранятся и обрабатываются в компьютере в формате с плавающей запятой. В этом случае положение запятой в записи числа может изменяться. Формат чисел с плавающей запятой базируется на экспоненциальной форме записи, в которой может быть представлено любой число. Так число А может быть представлено в виде: A = m×qn где m – мантисса числа q – основание системы счисления, n – порядок числа. Для однозначности представления чисел с плавающей запятой используется нормализованная форма, при которой мантисса отвечает условию: 1/n ≤ |m| < 1. Это означает, что мантисса должна быть правильной дробью и иметь после запятой цифру, отличную от нуля. Пример 32. Преобразуйте десятичное число 888,888, записанное в естественной форме, в экспоненциальную форму с нормализованной мантиссой. 888,888 = 0,888888×103 Нормализованная мантисса m = 0,888888, порядок n = 3. Число в форме с плавающей запятой занимает в памяти компьютера четыре (число обычной точности) или восемь байт (число двойной точности). При записи числа с плавающей запятой выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы. Диапазон изменения чисел определяется количеством разрядов, отведенных для хранения порядка числа, а точность (количество значащих цифр) определяется количеством разрядов, отведенных для хранения мантиссы. Пример 33. Определить максимальное число и его точность для формата чисел обычной точности, если для хранения порядка и его знака отводится 8 разрядов, а для хранения мантиссы и ее знака 24 разряда.
Максимальное значение порядка числа составит 11111112 = 12710, и, следовательно, максимальное значение числа составит: 2127 = 1,7014118346046923173168730371588×1038 Точность вычислений определяется количеством разрядов, отведенных для хранения мантиссы чисел. Максимальное значение положительной мантиссы равно: 223 - 1 ≈ 223 = 2(10х2,3) ≈ 10002,3 = 10(3х2,3) ≈ 107 Таким образом, максимальное значение чисел обычной точности с учетом возможной точности вычислений составит 1,701411×1038 (количество значащих цифр десятичного числа в данном случае ограничено 7 разрядами). При сложении и вычитании чисел в формате с плавающей запятой сначала производится подготовительная операция выравнивания порядков. Порядок меньшего (по модулю) числа увеличивается до величины порядка большего (по модулю) числа. Для того чтобы величина числа не изменилась, мантисса уменьшается в такое же количество раз (сдвигается в ячейке памяти вправо на количество разрядов, равное разности порядков чисел). После выполнения операции выравнивания одинаковые разряды чисел оказываются расположенными в одних и тех же разрядах ячеек памяти. Теперь операции сложения и вычитания чисел сводятся к сложению или вычитанию мантисс. После выполнения арифметической операции для приведения полученного числа к стандартному формату с плавающей запятой производится нормализация, т.е. мантисса сдвигается влево или вправо так, чтобы ее первая значащая цифра попала в первый разряд после запятой. Пример 34. Произвести сложение чисел 0,1×23 и 0,1×25 в формате с плавающей запятой. Произведем выравнивание порядков и сложение мантисс: 0,001×25 +0,100×25 0,101×25 При умножении чисел в формате с плавающей запятой порядки складываются, а мантиссы перемножаются. При делении из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. Пример 35. Произвести умножение чисел 0,1×23 и 0,1×25 в формате с плавающей запятой. После умножения будет получено число 0,01×28, которое после нормализации примет вид 0,1×27.
Источники:
1. Угринович Н.Д. Информатика и информационные технологии. 2. Windows-CD по курсу "Информатика и ИКТ", версия 4.1, 2005 3. www.metodist.ru/content/view/44/98/
Дата добавления: 2014-01-05; Просмотров: 1486; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |