- •1.1.1 Десятичная система счисления
- •1.2 Представление чисел в персональных компьютерах
- •1.2.1 Представление чисел в прямом коде
- •1.2.2 Представление чисел в дополнительном коде
- •Задание 1
- •2)Для числа (-18)
- •Задание 2
- •1) Для числа (-18)
- •1.2.4 Представление чисел с фиксированной точкой
- •2.Число -0.11010001 * 210100 хранится в 32-битном регистре в виде
- •3.Число 0.11010001 * 2-10100 хранится в 32-битном регистре в виде
- •4.Число -0.11010001 * 2-10100 хранится в 32-битном регистре в виде
- •Отрицательная область потери значимости
- •Положительная область потери значимости
- •Положительная область
- •Переполнения
- •Отрицательная область
- •Переполнения
- •Представляемые ожительные числа
- •Представляемые положительные
- •Представляемые отрицательные
- •Исследование представления чисел в оперативной памяти персонального компьютера
- •Технология работы
- •Технология работы
Отрицательная область потери значимости
Положительная область потери значимости
Положительная область
Переполнения
Отрицательная область
Переполнения
числа
числаПредставляемые ожительные числа
Представляемые положительные
Представляемые отрицательные
0
Числовая ось
-(1-2-24)*2128
-0.5*2-127
0.5*2-127
(1-2-24)*2128
Рис.5 Диапазон представления чисел в формате с плавающей точкой 32-разрядном регистре
Строго говоря, такое представление не позволяет хранить число нуль, но на практике код, состоящий из нулей во всех разрядах, считается допустимым и представляет число нуль.
В области переполнения можно попасть в том случае, если результат арифметической операции имеет абсолютную величину, превышающую ту, которая представляется нормализованным числом с порядком 128 (например, умножение 2120 * 2100 = 2220), а в области потери значимости – если результат арифметической операции имеет очень малую абсолютную величину (например, 2-120 * 2-100 = 2-230).
Принципиальным является тот факт, что формат с плавающей точкой в принципе не позволяет представить больше отличающихся друг от друга числовых величин – их количество по-прежнему остается как и в формате с фиксированной точкой равной, например, для слова длиной 32 бит равным 232 . Существо отличий состоит в том, числовые величины по разному распределены на числовой оси. Интервал между соседними числами (кодовыми комбинациями, отличающимися значением в младшем разряде мантиссы в формате с плавающей точкой) – переменный и зависит от абсолютной величины числа.
ЗАДАНИЕ 4
Исследование представления целых чисел в микропроцессоре персонального компьютера
1.Цель эксперимента: убедиться, что внутреннее представление чисел в микропроцессоре современного компьютера является двоичным
ТЕХНОЛОГИЯ РАБОТЫ
Войти в среду ТУРБО-ПАСКАЛЬ
Набрать (за исключением комментариев – предложений в фигурных скобках} в редакторе ТУРБО-ПАСКАЛЬ программу, сохранив ее под именем CHISLO1:
PROGRAM BinariRepresentation1; {Заголовок программы с именем BinariRepresentation1}
VAR m,m0,i: INTEGER; x,h: REAL; {Описание переменных}
BEGIN {Раздел операторов}
m0:=1; {Оператор присваивания}
FOR m:=m0-1 TO m0+1 DO {Оператор внешнего цикла}
BEGIN h:=1/m;
x:=0;
FOR i:=1 TO m DO x:=x+h; {Оператор вложенного цикла}
WRITELN(m,’ ’x-1) {Вызов процедуры вывода}
END
END. {Оператор завершения программы}
Откомпилировать программу, щелкнув два раза мышкой по кнопке COMPILE
Если компилятор обнаружил синтаксические ошибки, устранить их и снова откомпилируйте программу
Если компилятор синтаксических ошибок не обнаружил, запустить программу на решение, дважды щелкнув мышью по кнопке RUN
Компьютер отказывается решать задачу, выдавая сообщение: Error 200: Division by zero (ошибка 200: попытка деления на нуль)
Объясните, в чем смысл задачи и почему компьютер отказывается решать такую задачу
Программа достаточно поста, но для тех, кто не знаком с языком Паскаль рассмотрим некоторые пояснения. Внешний цикл FOR обеспечивает трехкратно исполнение программы для значений m0: m0-1; m0 ; m0+1 . Далее для каждого из трех чисел m раз осуществляется суммирование величины 1/m и выдается на решение разность, показывающая, на сколько полученное число отличается от 1.
Исправьте в программе значение вводимого числа с m0:=1 на m0:=2
Откомпилируйте и запустите программу на решение
Нажав одновременно на клавиатуре кнопки (Alt-F5), запишите и проанализируйте полученный результат решения
Вернитесь к п.8, заменив m0:=2 на m0:=3
Выполните пункты 9,10
Проделайте пункты 8-10, записав полученные результаты: для m0=4 – 32, 123, 128, 247, 256, 512, 2048, 4096, 5000, 8000, 8192, 8500, 16300, 16384, 32766, 32767, 32768
Обратите внимание, как ведет себя компьютер, при m0=32766, 32767. Сообщение: Error 76: Constant out of range – (константа нарушает границы), которое выдается компилятором при m0=32768, в случае, если вы пытаетесь присвоить переменой значение, выходящее за границы, допустимые для типа этой переменной.
14. Замените оператор WRITELN(m,’ ’x-1) на оператор WRITELN(m,’ ’x=1) и при любом значении m0 посмотрите, как изменится отображение результата решения задачи.
15.Проанализировать полученные в экспериментах результаты и сделать выводы.
ЗАДАНИЕ 5