Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Любопытные эксперименты.
Представление чисел в машине
В компьютерной литературе утверждается, что компьютер хранит и обрабатывает данные в двоичной системе. А действительно ли это так? Мы вводим десятичные числа и получаем на экране десятичный результат. Можно ли быть уверенным в том, что компьютер производил действия именно в двоичной системе? Как это проверить?
Цель эксперимента. Убедиться, что внутреннее представление чисел в современном компьютере по-прежнему двоичное.
Наберем следующую несложную программу, написанную на языке Паскаль (листинг 2.1).
Листинг 1.1. Программа для проверки внутреннего представления чисел в компьютере
PROGRAM BinaryRepresentationI;
VAR m, m0, i: INTEGER;
x, h: REAL;
BEGIN
WRITELN ('Vvedite m0');
READLN (m0);
FOR m: = m0-l TO m0+l DO
BEGIN h: = l/m;
x:=0;
FOR i:=l TO m DO x:=x+h;
WRITELN(m, ' ', x-1)
END
END.
Для тех, кто не очень хорошо знаком с языком Паскаль, несколько комментариев. Внешний цикл for обеспечивает троекратное исполнение программы для значений m от то - i до то + 1 (в нашем случае это 127, 128 и 129). Нетрудно заметить, что речь идет о числе, являющемся точной степенью двойки (т. е. 128) и двух "соседних". Далее для каждого из трех чисел m раз проделывается суммирование величины 1/m и печатается разность, показывающая, насколько полученное число отличается от 1. Запустив программу, мы увидим на экране дисплея следующий результат:
127 -7.2759576142Е-12
128 0.0000000000E+00
129 2.1827872843Е-11
Иными словами, только для числа 1/128, которое представляется в двоичной системе точно, результат тождественно равен нулю. А вот для двух других чисел результат получился хоть и очень маленький (10-11 — 10-12), но ненулевой.
Может быть это случайность? Проверим для других то, например 512 или 2048 — результат будет аналогичный. В то же время, при то == 126, все три результата будут отличны от нуля, т. е. степени двойки действительно являются "особенными".
Отметим, что данный эксперимент можно провести и для других языков программирования. Например, для языка Basic.
Вывод. Полученные результаты можно объяснить единственным способом: компьютер действительно хранит числа и производит вычисления в двоичной системе. Именно поэтому только для степеней двойки ему удается получить точный результат.
Дата публикования: 2015-07-22; Прочитано: 161 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!