Министерство образования и науки Российской Федерации
Министерство образования Саратовской области
Национальный исследовательский Саратовский государственный университет имени Н.Г. Чернышевского
Саратовский областной институт развития образования
Комитет по информатизации Саратовской области
Комитет по образованию администрации муниципального образования «Город Саратов»
Автономная некоммерческая организация «Информационные технологии в образовании»
Автономная некоммерческая организация «Научно-исследовательский центр «Образование. Качество. Отрасль»»
IX Всероссийская (с международным участием) научно-практическая конференция
«Информационные технологии в образовании»
«ИТО-Саратов-2017»
2-3 ноября 2017 года, г. Саратов

Использование представления десятичного числа в виде суммы степеней двойки для перевода чисел в двоичную систему счисления

Балашовский институт (филиал) ФГБОУ ВО «Саратовский национальный исследовательский государственный университет имени Н.Г. Чернышевского»
В статье рассматриваются часто возникающие в школьной информатике вопросы перевода десятичного числа в двоичное. Сравниваются два способа: представление в виде суммы степеней двойки и деление на два. Предложена реализация функций перевода на языке C++.

Работа выполнена под научным руководством

доцента кафедры физики и информационных технологий БИ СГУ,

кандидата физ.-мат. наук Грибановой-Подкиной М.Ю.

Вопросы, связанные с изучением систем счисления, являются одними из важнейших в современной школьной информатике. Это связано, главным образом, с тем, что перевод из одной системы счисления в другую часто является необходимым этапом для решения других, более содержательных задач.

Систему счисления мы рассматриваем как метод представления чисел при помощи письменных знаков [1]. Как известно, системы счисления делятся на непозиционные и позиционные.

В непозиционных системах счисления значение символа не зависит от его положения в числе. Примерами таких систем счисления являются: унарная, римская, древнерусская. Среди недостатков таких систем счисления можно выделить большое число различных знаков и сложность выполнения арифметических операций над такими числами.

В позиционных системах счисления наоборот, значение символа зависит от его позиции в ряду цифр, которые составляют число. Так, в числе первая цифра означает количество сотен, вторая – десятков, третья – единиц и так далее. Позиционные системы счисления намного удобнее  для выполнения операций над числами, поэтому они наиболее  распространены. Позиционные системы счисления  - это двоичная, троичная и тому подобные. Такие системы счисления характеризуются основанием.

Основание позиционной системы счисления – это количество различных символов, используемых для записи числа. Разряды числа нумеруются справа налево, так что младший разряд нумеруется нулем, а разряды дробной части имеют отрицательные номера.

В информатике особое место занимает двоичная система счисления [2]. Благодаря непосредственной реализации в цифровых электронных схемах на логических вентилях, она используется практически во всех современных компьютерах и прочих вычислительных электронных устройствах. Двоичная система счисления наиболее знакома ученикам из курса информатики. Рассмотрим подробнее перевод из десятичной системы счисления в двоичную.

Для перевода в двоичную систему счисления используют два способа:

1) сложение степеней двойки;

2) деление на 2.

Рассмотрим  подробнее каждый из методов.

Для перевода из десятичной системы счисления в двоичную путем сложения степеней двойки нужно расписать число как сумму степеней двойки и в соответствующих показателям степеней слагаемых разрядах поставить единицы, остальные разряды заполнить нулями.

Пример:

В двоичной системе число будет выглядеть так:

Рисунок 1. Двоичное представление числа 389

 

Таким образом, для перевода числа 389 нам понадобилось всего 4 действия.

Первым способом мы решили бы эту задачу в 8 шагов:

Рисунок 2. Деление с остатком для перевода в двоичную систему

 

Результат перевода формируется из полученных остатков и последнего частного, собранных в обратном порядке.

Очевидно, что из приведенных способов первый требует гораздо меньших временных затрат, поэтому более эффективен. При решении вспомогательных задач по переводу в двоичную систему счисления целесообразнее использовать именно представление числа в виде степеней двойки, это приведет к увеличению скорости выполняемых заданий, что оказывается немаловажным фактором, например, при выполнении заданий ЕГЭ.

Хорошей особенностью описанного метода является прямая аналогия с обратным переводом – из двоичной системы в десятичную. Рассмотрим алгоритм обратного перевода:

Первым шагом записываем данное двоичное число, сверху над каждой цифрой справа налево записываем степени двойки, начиная с 1=, так что для каждого следующего шага показатель степени увеличивается на 1.

 

128

64

32

16

8

4

2

1

1

0

0

1

1

0

1

1

 

Далее складываем те степени, которые соответствуют в нашей записи единице, то есть, записаны над 1.

Таким образом, 128+16+8+2+3=155. Это и есть десятичный эквивалент двоичного числа.

Для закрепления умений переводить числа из десятичной системы в двоичную целесообразно предложить ученикам описать и реализовать алгоритм перевода на языке программирования [3].

Алгоритм заключается в циклическом выборе максимальной степени двойки, которая меньше заданного числа, и последующего уменьшения числа на эту степень. Если соответствующая степень двойки присутствует в сумме, то разряд двоичного числа заполняется единицей, в противном случае – нулем.

Покажем реализацию перевода в двоичную систему счисления на языке C++. В данном языке уже определен метод для перевода, но для наглядности напишем свой код тем способом, который мы выбрали.

public static String bin(double a){    //Перевод в двоичное число

         String s="";

         inti=-1;                         //показатель степени

         intstep=1;

         do{

                   i++;

                  step*=2;              //степень двойки

         }

         while(step<=a);       

         int ch=1;

         for (; i >= 0; i--) {

                  ch=1;

                  for (int j=0;j<i;j++){

                            ch*=2;

                   };

                   if(ch<=a) {

                            s+='1';

                             a-=ch;

                   } else{

                            s+='0';

                   }      

         } 

         return s

}                

Теперь покажем, как реализовать программу обратного перевода из двоичного числа в десятичное.

public static int dec(int binary){

         int ch=1;

         int decimal=0;

         int stepen=0;

          while (binary>0){

                   if (binary%10==1){

                            decimal+=ch;

                   }

                   stepen++;

                  binary/=10;

                   ch*=2;

         }

         return decimal;

 }

Составление алгоритма и разработка программы перевода десятичного числа в двоичное и наоборот позволит в полной мере закрепить навык использования рассматриваемого метода, а также поможет усовершенствовать владение языком программирования для решения интересных алгоритмических задач.

Список использованных источников
  1. Златопольский Д. М. Системы счисления. Учебные и занимательные материалы. 94 выпуск. – М.: Ленанд, 2015. – 512 с.
  2. Рассел Д. Двоичная система счисления. – М.: Книга по Требованию, 2012. – 160 c.
  3. Окулов С. М. Программирование в алгоритмах. - М.: Бином. ЛЗ, 2014. – 386 с.
Вид представления доклада  Публикация
Ключевые слова  Системы счисления, двоичное представление числа, перевод в двоичную систему счисления, программа на C++

В статусе «Черновик» Вы можете производить с тезисами любые действия.

В статусе «Отправлено в Оргкомитет» тезисы проходят проверку в Оргкомитете. Статус «Черновик» может быть возвращен тезисам либо если есть замечания рецензента, либо тезисы превышают требуемый объем, либо по запросу участника.

В статусе «Рекомендован к публикации» тезис публикуется на сайте. Статус «Черновик» может быть возвращен либо по запросу участника, либо при неоплате публикации, если она предусмотрена, либо если тезисы превышают требуемый объем.

Статус «Опубликован» означает, что издана бумажная версия тезиса и тезис изменить нельзя. В некоторых крайне редких ситуацих участник может договориться с Оргкомитетом о переводе тезисов в статус «Черновик».

Статус «Отклонен» означает, что по ряду причин, которые указаны в комментариях к тезису, Оргкомитет не может принять тезисы к публикации. Из отклоненных тезис в «Черновики» может вернуть только Председатель программного или председатель оргкомитета.