|
Проверка факта двоичного представления чисел в компьютереИз уроков информатики известно, что в компьютере данные хранятся и обрабатываются в двоичной системе счисления. А действительно ли это так? В собственных программах, в электронной таблице Microsoft Excel и в других случаях мы вводим десятичные числа и получаем на экране десятичный результат. Можем ли мы быть уверенными, что компьютер производил действия именно в двоичной системе? Как это проверить? Чтобы убедиться в этом, давайте проведем небольшой эксперимент. Наберем несложную программу, которая на школьном алгоритмическом языке имеет вид: алг Проверка_двоичного_представления_чисел нач цел m, n, i, вещ h, sum m := 128 вывод нс, " n Разность" нц для n от m - 1 до m + 1 h := 1/n sum := 0 нц для i от 1 до n sum := sum + h кц вывод нс вывод n, " ", sum - 1 кц кон Прокомментируем ее. “Наружный” оператор цикла с параметром n обеспечивает троекратное исполнение программы для значений n от m – 1 до m + 1 (в нашем случае это 127, 128 и 129). Нетрудно заметить, что речь идет о числе, являющемся точной степенью двойки (т.е. 128) и двух “соседних”. Далее для каждого из трех чисел n раз происходит суммирование величины 1/n и печатается разность, показывающая, насколько полученное число (по сути, равное n * 1/n) отличается от 1. Запустив программу, мы увидим на экране следующий результат n Разность 127 … 128 0.0000000000Е+00 129 … Если вы подготовите аналогичную программу на известном вам языке программирования, то увидите, что только для числа 1/128 результат тождественно равен нулю. А вот для двух других чисел результат получился хоть и маленький, но ненулевой! Почему? Все дело в том, что число 1/128 представляется в двоичной системе точно, а числа 1/127 и 1/129 — нет. Может быть, это случайность? Проверьте это для других значений m, например, 512 или 2048. В то же время, при m = 126 все три результата будут отличными от нуля, т.е. степени двойки действительно являются “особенными”. Вывод. Полученные результаты можно объяснить единственным способом: компьютер действительно хранит числа и производит вычисления в двоичной системе. Именно поэтому только для степеней двойки ему удается получить точный результат. Задание для самостоятельной работы Определите значения разности, указанной в комментариях к программе, для чисел 127, 129 и троек чисел, “в центре” которых находятся числа 512, 2048 и 126. Определите также (без использования программы), как в двоичной системе выглядит число 1/128. Ответы, пожалуйста, присылайте в редакцию. Фамилии всех приславших правильные ответы будут опубликованы. Литература 1. Еремин Е.А. Популярные лекции об устройстве компьютера. СПб.: БХВ-Петербург, 2003. 4 Говорят, что до этой уловки в ответ на предложение учителя найти сумму всех целых чисел от 1 до 100 додумался выдающийся математик XIX века Карл Гаусс, когда ему было девять лет. |