model_ccx

advertisement
Овчинникова И.И., учитель информатики и ИКТ МОУ гимназии №12 Краснооктябрьского района г.
Волгограда
«Моделирование поразрядных вычислений в различных системах счисления в среде электронных
таблиц»
Материал можно использовать при проведении факультатива, элективного курса, в
исследовательской или проектной работе с учениками.
Одна из актуальных тем курса информатики – тема «Системы счисления». Знание этого материала
помогает приобретать навыки оперирования единицами измерения информации, понимать, каким образом
передается и в каком виде хранится информация в памяти компьютера, овладевать понятиями «бит», «байт»,
«кодирование информации в компьютере».
ПРОБЛЕМА



Почему в современных компьютерах используется двоичная система счисления и можно ли
заменить ее какой-либо другой?
Почему компьютер обрабатывает только двоичные данные, но при этом является универсальным
исполнителем?
Сможем ли мы в процессе моделирования поразрядных вычислений в различных системах
счисления найти ответы на вопрос, какую роль сыграли системы счисления в истории
компьютеров?
Результаты
Для учителя
Для ученика
В процессе моделирования мы
•
установим, почему нужно рассматривать
число как совокупность цифр, каждая из
которых имеет определенный вес,
Наши модели помогут
•
уточним, какова роль системы счисления
при выполнении арифметических
операций,
в современных компьютерах используется
двоичная система счисления.
•
изучим процессы поразрядных вычислений
в различных системах счисления.
обосновать, почему
Выбор табличного процессора, как программного средства для моделирования поразрядных вычислений
в различных системах счисления связан с тем, что именно среда электронной таблицы наиболее наглядно
может представить работу в каждом разряде. Отображение формул в данном случае будет помогать лучше
разобраться в математических и логических операциях с разрядами. Отправной точкой берем десятичную
систему счисления и реализуем способ сложения и вычитания двух натуральных чисел столбиком.
Выполнение арифметических операций в различных системах счисления проводятся по правилам,
аналогичным известным нам для десятичной системы. Правила эти следующие:
-
арифметические операции сложения и вычитания проводятся поразрядно, то есть каждый разряд одного
числа складывается (вычитается) с разрядом того же веса другого числа;
-
если при выполнении операции над разрядами получается число большее чем основание системы
счисления, то говорят, что возникает перенос, который учитывается при выполнении операции с более
старшим разрядом;
-
если при выполнении операции вычитания уменьшаемый разряд меньше вычитаемого возникает заем,
который уменьшает на 1 более старший разряд уменьшаемого;
-
умножение проводится поразрядным умножением со сложением получаемых результатов;
1 эксперимент. Поразрядное сложение десятичных чисел
Сформулируем правило поразрядного сложения чисел:
Сложение чисел начинается с цифр наименьшего разряда; если при сложении цифр разряда полученное
число больше либо равно 10 (основанию системы счисления), то определяется, какое количество единиц
остается в этом разряде, а какое переносится в следующий разряд. После обработки цифр разряда
происходит переход к обработке цифр следующего (соседнего слева) разряда.
1. Ввод числовых данных. Нужно сложить два девятиразрядных числа.
В ячейки поразрядно заносятся цифры первого и второго чисел.
2. Ввод формул.
- подсчитывается сумма цифр наименьшего разряда и значение переноса в следующий разряд. Если сумма
двух цифр больше либо равна основанию системы счисления(10), то из суммы цифр вычитается 10.
Таким образом, получается формула
=ЕСЛИ(K3+K4<10;K3+K4;K3+K4-10),
а формула подсчета единиц, переносимых в следующий разряд
=ЕСЛИ(K3+K4<10;0;1)
- Для подсчета суммы цифр следующего разряда формула изменяется
=ЕСЛИ(J3+J4+K7<10;J3+J4+K7;J3+J4+K7-10)
Меняется и формула подсчета единиц, переносимых в следующий разряд
=ЕСЛИ(J3+J4+$K$7<10;0;1)
Формулы копируем для остальных разрядов, проверяем, не появился ли в числе-результате десятый разряд.
Для этого в ячейку В5 заносим формулу =ЕСЛИ($C$7>0;$C$7;"")
3. Тестирование
Проверяем перенос из одного разряда в другой
999999999+111111111=1111111110
899999999+2=900000001
2 эксперимент. Поразрядное вычитание из одного натурального числа другое.
Сформулируем правило поразрядного вычитания чисел:
Вычитание чисел начинается с цифр наименьшего разряда, если цифра разряда первого числа меньше
цифры соответствующего разряда второго числа, то из соседнего слева разряда занимается единица.
После обработки цифр разряда происходит переход к обработке цифр следующего разряда.
Запись исходных данных
Пусть первое число девятиразрядное, второе не превышает девяти разрядов.
Находим разность цифр наименьшего разряда и значение переноса в следующий разряд. При
написании формулы учтем, что если цифра разряда первого числа меньше цифры
соответствующего разряда второго числа, то из старшего разряда занимается единица.
=ЕСЛИ(K3<K4;K3+10-K4;K3-K4)
Формула о заеме единиц из старшего разряда
=ЕСЛИ(K3<K4;1;0), то есть 1, если заем произведен, и 0, если не произведен.
4. Для подсчета разности цифр следующего разряда
=ЕСЛИ(J3<J4+K7;J3+10-J4-K7;J3-J4-K7)
Изменяется и формула о заеме единиц из старшего разряда
=ЕСЛИ(J3<J4+K7;1;0)
5. Для последнего разряда проверим условие для отбрасывания незначащего нуля
=ЕСЛИ(C3-C4-D7=0;"";C3-C4-D7)
6. Тестирование
Необходимо учесть заем единиц из старшего разряда
111111111-99999999=11111112
101010101-20202020=80808081
100000000-99999999=1
3 эксперимент
1.
2.
3.
Мы реализовали случаи выполнения арифметических операций над числами конкретной
(десятичной) системы счисления. Ответим на вопрос: как изменится решение задачи, если
складываются не два, а несколько десятичных чисел?
Прежде всего, нужно учесть, что из одного разряда в другой может быть перенесено более одной
единицы.
Сумма =ЕСЛИ(СУММ(K3:K5)<10;СУММ(K3:K5);СУММ(K3:K5)-10*ЦЕЛОЕ(СУММ(K3:K5)/10))
Перенос =(СУММ(K3:K5)-K6)/10
Сумма следующего разряда =ЕСЛИ(СУММ(J3:J5)+K8<10;СУММ(J3:J5)+K8;СУММ(J3:J5)+K810*ЦЕЛОЕ((СУММ(J3:J5)+K8)/10))
Перенос следующего разряда =(СУММ(J3:J5)+K8-J6)/10
4 эксперимент
Реализуем поразрядное умножение двух натуральных десятичных чисел
Сформулируем алгоритм поразрядного умножения чисел:
Каждая из цифр второго числа умножается на каждую из цифр первого числа, начиная с цифры
наименьшего разряда, при умножении определяется, какое количество единиц после умножения
остается в данном разряде, а какое переносится в следующий разряд. Произведения записываются
одно под другим в учетом разрядного сдвига и складываются.
1. Пусть первое число девятиразрядное, а второе – трехразрядное.
2. Последовательно умножается цифра наименьшего разряда второго числа на цифры первого числа
=ЕСЛИ($M$4*M3<10;$M$4*M3;$M$4*M3-10*ЦЕЛОЕ($M$4*M3/10))
Для запоминания количества единиц, переносимых в следующий разряд заводим дополнительную
таблицу, куда и вносим данные
=ЦЕЛОЕ($M$4*M3/10)
Для подсчета произведения цифры наименьшего разряда второго числа на цифру следующего
разряда первого числа формула видоизменяется
=ЕСЛИ($M$4*L3+X5<10;$M$4*L3+X5;$M$4*L3+X5-10*ЦЕЛОЕ($M$4*L3+X5/10))
Изменяется и формула подсчета количества единиц, переносимых в следующий разряд
=ЦЕЛОЕ(($M$4*L3+X5)/10)
Формулы копируются
Проверяют, не появился ли новый разряд. Для этого
Вносим формулу =ЕСЛИ(P5>0;P5;"")
Производим умножение 2 цифры 2 числа на цифры первого числа
=ЕСЛИ($L$4*M3<10;$L$4*M3;$L$4*M3-10*ЦЕЛОЕ($L$4*M3/10))
=ЦЕЛОЕ($L$4*M3/10)
=ЕСЛИ($L$4*L3+W6<10;$L$4*L3+W6;$L$4*L3+W6-10*ЦЕЛОЕ(($L$4*L3+W6)/10))
=ЦЕЛОЕ(($L$4*L3+W6)/10)
Формулы копируются
Проверяют, не появился ли новый разряд. Для этого
=ЕСЛИ(O6>0;O6;"")
Производится умножение цифры старшего разряда второго числа на цифры первого числа.
Затем производится сложение трех полученных чисел.
5 эксперимент
Теперь можно приступить к реализации арифметических операций с двумя числами в различных системах
счисления. Традиционные системы счисления с основанием Р иначе называют Р-ичными.
На основании предыдущих экспериментов мы можем сделать вывод о влиянии основания системы
счисления на перенос единицы в следующий разряд и то, какое количество единиц остается в данном
разряде: если складываются цифры двух чисел в системе счисления с основанием р, то для
нахождения количества единиц, оставляемых в этом разряде, из полученного числа вычитается р, а в
следующий разряд переходит единица.
=ЕСЛИ(K3+K4<$C$10;K3+K4;K3+K4-$C$10)
=ЕСЛИ(J3+J4+K7<$C$10;J3+J4+K7;J3+J4+K7-$C$10)
=ЕСЛИ(K3+K4<$C$10;0;1)
=ЕСЛИ(J3+J4+K7<$C$10;0;1)
6 эксперимент
Проведя эксперименты с различными системами счисления, мы заметили, что если используются только две
цифры в двоичной системе счисления, то формулы могут быть более простыми.
Так, нет необходимости использовать условные функции, заменив их функцией, реализующей остаток от
деления на 2. Аналогичная функция используется в компьютерах и реализуется элементной базой в
микросхемах.
7 эксперимент
Усложним задачу. Будем вводить числа в десятичной системе, переведем их в двоичную систему счисления
и запишем поразрядно. Предусмотрим возможность работать с отрицательными числами.
Мы знаем, что отрицательные числа записываются в виде дополнительного кода. Как получить
дополнительный код отрицательного числа?
Дополнительный код используется для упрощения выполнения арифметических операций. Если бы
вычислительная машина работала с прямыми кодами положительных и отрицательных чисел, то при
выполнении арифметических операций следовало бы выполнять ряд дополнительных действий. Например,
при сложении нужно было бы проверять знаки обоих операндов и определять знак результата. Если знаки
одинаковые, то вычисляется сумма операндов и ей присваивается тот же знак. Если знаки разные, то из
большего по абсолютной величине числа вычитается меньшее и результату присваивается знак большего
числа. То есть при таком представлении чисел (в виде только прямого кода) операция сложения реализуется
через сложный алгоритм. Если же отрицательные числа представлять в виде дополнительного кода, то
операция сложения, в том числе и разного знака, сводится к их поразрядному сложению.
Применим следующий алгоритм получения дополнительного кода отрицательного числа.
1. модуль отрицательного числа представим прямым кодом в k двоичных разрядах;
2. значение всех бит инвертировать: все нули заменим на единицы, а единицы на нули (таким образом,
получается k-разрядный обратный код исходного числа);
3. к полученному обратному коду прибавим единицу.
Пример:
Получим 8-разрядный дополнительный код числа -52:
00110100 - число |-52|=52 в прямом коде
11001011 - число -52 в обратном коде
11001100 - число -52 в дополнительном коде
Мы поняли, почему обрабатываемую компьютером информацию необходимо преобразовывать именно в
двоичный код.
Это связано с возможностью создания электронного элемента, который может устойчиво находиться
в одном из двух состояний: намагничено – не намагничено, есть ток – нет тока. Эти два устойчивых
состояния и кодируются 1 и 0. Как и любая модель, наша программа ограничена по возможностям. Она
работает только системами счисления, не превышающими 10. Однако проводя эксперименты, мы
подтвердили вывод о преимуществе двоичной системы счисления.
Выводы:
В ЭВМ используют двоичную систему, потому что она имеет ряд преимуществ перед
другими системами:
1.
Для ее реализации нужны технические элементы с двумя возможными состояниями (есть
ток, нет тока; включено, выключено и т.д. Одному из состояний ставится в соответствие 1,
другому – 0), а не десять, как в десятичной системе.
2.
Представление информации посредством только двух состояний надежно и
помехоустойчиво.
3.
Возможно применение аппарата булевой алгебры для выполнения логических
преобразований информации.
4.
Двоичная арифметика намного проще десятичной.
5.
Двоичные таблицы сложения и умножения предельно просты.
Литература
1.
2.
3.
4.
«Математические основы информатики», Е.В. Андреева, Л.Л. Босова, И.Н. Фалина, Москва, Бином,
Лаборатория знаний, 2005
«Роль систем счисления в истории компьютеров». А. Стахов, ИЗДАТЕЛЬСТВО "МИР" , Москва,
1989
Информатика: 7-9 класс: Базовый курс: Практикум-задачник по моделированию (под ред.
Макаровой Н.В.), Питер,2008
Материалы с сайта http://www.computer-museum.ru/
Download