Показать сообщение отдельно
Старый 28.11.2019, 20:32   #51
Феникс Джонатанович ДонХуанЦзы
Senior Member
МегаБолтун
 
Аватар для Феникс Джонатанович ДонХуанЦзы
 
Регистрация: 02.06.2006
Адрес: Москва
Сообщений: 73,058
Записей в дневнике: 4
Вес репутации: 10
Феникс Джонатанович ДонХуанЦзы отключил(а) отображение уровня репутации
По умолчанию

Быстрый и точный перевод в двоичную систему счисления

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

Классический метод деления "уголком" не удовлетворяет ни первому, ни второму критерию. Он очень медленный. Для перевода крупного числа, например, 192 в двоичную систему счисления, потребуется выполнить восемь делений (при оптимизированном варианте - 7) с остатком. Когда речь заходит о числах из 10, 12 и уж особенно, 16 заданий ЕГЭ, то такой метод просто становится неприменимым.


Задание №16, ещё достаточно простое. Потребует "всего" 15 делений.С точностью тут тоже беда. Очень мало людей умеют делить "уголочком" по-настоящему. Я в другой статье написал, как это делается, но там в комментариях налетели, прямо заклевали, сказали, что я не достоин, и что "мой" метод - только морока, и что в советские времена оооооо... Для проверки у меня есть 3 примера, которые с первого раза ещё никто не решил правильно. Хотя бы в одном, но ошиблись. (а решали бы по-моему, не ошиблись бы). Вот они: 6624:32, 10850:31, 10710:102. В трёх примерах ошибаются ВСЕ, а тут надо от 8 и больше делений делать. Ошибка гарантирована.
...из десятичной системы счисления в двоичную. К сожалению, уже на этом этапе экзаменуемые допускают арифметические ошибки по невнимательности...
Это, между прочим, в официальном документе на сайте ФИПИ написано.
Двоичные разряды и разрядные слагаемые

Этот метод очень быстрый, требует только уметь складывать. Ошибки и тут не исключены, но их куда меньше.
Суть метода: Нам нужен ряд разрядных весов, которые мы будем складывать, чтобы набрать нужную сумму. Для двоичной системы разряды идут (справа налево) 1,2,4,8,16,32,64... и т.д.:


Двоичные разрядыТеперь надо "набрать" из этого ряда наше число (которое надо было переводить), под каждым из них записывая "0", если оно не вошло в набор, и "1", если вошло. Например, число 231


Подготовили "черновик"Ясно, что в наборе не может быть 256, 512 и далее, потому что они уже больше 231, уже перебор. А вот 128 нас устроит, но его не хватит, значит надо брать следующее - 64. Вместе уже будет 192:


Взяли 128 и 64, получили 192.И до сих пор не добрались до 231. Добавляем 32:


Взяли 128, 64 и 32, получили 224Всё равно не хватает. Ещё берём 16:


Взяли 128, 64, 32 и 16, получили 240240 - это уже перебор, поэтому в 16 ставим "0", и берём 8:


128, 64, 32, 8. Получили 232232 - Ну почти! Надо 231. Убираем 8, берём 4:


228Самые шустрые уже поняли: до 231 нужно набрать всего 3, а это будет двойка и единица:


Бинго!Запись в таблице под горизонтальным рядом и есть запись числа в двоичной системе счисления.
И так, для быстрого перевода требуется всего лишь ряд чисел, которые покрашены красным. Система построения этого ряда простая: каждый следующий больше предыдущего в (основание) раз. Для троичной 1, 3, 9, 27, 81, ... четверичная 1, 4, 16, 64, 256, 1024... Но только для двоичной системы мой метод даёт существенное ускорение, ибо имеются только цифры "0" и "1", для других придётся одно и то же число добавлять несколько раз, а в табличку записывать количество добавлений


Перевод в восьмеричную систему счисления Разрядное вычитание

В предыдущем методе потребовалось выполнять "откаты" назад, потому что набранная сумма превосходила наше число. В методе "вычитания" так делать не придётся, но теперь вместо сложения (простого действия) надо делать вычитание (сложное действие). Подготовка аналогичная, ряд двоичных разрядов:


Снова ряд разрядовТеперь из числа 231 вычитаем те разряды, которые можно вычесть. С каждым вычитанием в таблицу вписываем "1", а если пропускаем, то "0". Я не буду подробно записывать, потому что это во многом повторит предыдущую главу:


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

Последний способ, который я хочу сегодня показать - самый хитрый и самый быстрый перевод - комбинирует предыдущие два, но работает только с "хорошими" числами.
Хорошими назовём те числа, которые близко от степеней двойки: 2, 4, 8,16,32,64,128,256,512 и т.д.
Степени двойки в двоичной системе выглядят "круглыми", например,


Количество нулей соответствует показателю степени.
Нам нужно выбрать ближайшую степень двойки к нашему числу, записать её в двоичной системе, а потом вычесть или добавить двоичную запись разности между числом и степенью двойки.
Пример

Попробуем перевести число 250 из десятичной в двоичную. Ближайшая степень двойки - 256 (2 в 8й степени). Для того, чтобы из 256 получить 250, надо вычесть 6 (110 в двоичной, см перевод выше).


Вычитаем столбиком:


ВычитаниеВсё. Готово. Ещё раз, метод безумно быстрый, но работает не со всеми числами, и требует умения вычитать и складывать столбиком. Зато любым другим методом на этот перевод уйдёт уйма времени. Кстати, этот метод подразумевается в том самом 16м задании ЕГЭ и 10м задании ОГЭ.
Заключение

Мои методы частично изучаются в школах (например, метод "вычитания"), но почему-то ученики их не очень любят, а всё время скатываются в "деление уголком", совершая сотни ошибок, от вычислительных до банального "не с той стороны записал остатки". Тем не менее, если разобраться в них, каждому будет достаточно небольшой тренировки, чтобы переводить числа из десятичной системы в двоичную (и даже обратно) так быстро, что это покажется магией.
PS

Ставьте лайк, пишите в комментариях, что непонятно. Не забудьте подписаться на мой канал, потому что я ещё хочу разобрать подробнее сложение и вычитание в позиционных системах счисления (для последнего метода), обратный перевод в десятичную систему, и "экспресс" перевод между системами с основаниями 2,4,8 и 16.
__________________
Твори Любовь ЗДЕСЬ и СЕЙЧАС!
ЗАВТРА может быть ПОЗДНО!
Феникс Джонатанович ДонХуанЦзы вне форума   Ответить с цитированием