1

Двоичная система для чайников. Часть 2.

Здравствуйте, товарищи!


Для лучшего понимания сути данного поста желательно сначала прочитать
первую часть.


Я решил сделать серию постов по информатике для чайников. Это второй пост.
Ставьте лайки, если хотите еще немного лампового ликбеза ;)


---------------------------------------------------------


Перевод из десятичной системы в двоичную


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

а*10^0 + b*10^1 + c*10^2 + d*10^3 +...

где a, b, c, d - это числа от 0 до 9.



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


а*2^0 + b*2^1 + c*2^2 + d*2^3 +...

где a, b, c, d - это 0 или 1.



Таким образом, перевод числа из одной системы в другую состоит в подборе этих самых коэффициентов a, b, с, d и т.д.


Давайте переведём число 185 в двоичную систему.

Очевидно (надеюсь), что нет смысла рассматривать степени двойки большие нашего числа (185) нет смысла. В данном случае нет смысла рассматривать числа от 2^8 (=256) и более.


Соответственно, нам надо найти максимальную степень двойки, которая меньше или равна числу, с которым мы работаем. В данном случае это 2^7 (=128).


Получаем:

185 = 1 * 2^7 + x

где x - это остаток, который нам еще предстоит разобрать.


Находим x:

x = 185 - 2^7 = 185 - 128 = 57


Теперь имеем:

185 = 1 * 2^7 + 57



Дальше нам надо применить тот же алгоритм к полученному хвосту:

57 = 1 * 2^5 + x1 = 1 * 2^5 + 25



И дальше:


25 = 1 * 2^4 + x2 = 1 * 2^4 + 9

9 = 1 * 2^3 + x3 = 1 * 2^3 + 1

1 = 1 * 2^0


Теперь соберём все "хвосты" вместе:

185 = 1 * 2^7 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^0


Давайте оценим, сколько цифр будет в нашем двоичном числе.

Максимальная степень двойки получилась 7.

Соответственно, всего получим 7+1 цифр (т.к. считаем степени с нулевой), наглядно:

76543210


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


76543210 - это номер позиции (соответствует степени двойки)

10111001 - а это наш ответ (185 в двоичной системе)


Проверим результат обратным преобразованием:

10111001 => 1 * 2^7 + 0 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0


уберём все нулевые слагаемые и получим

10111001 => 1 * 2^7 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 1 * 2^0


Теперь посчитаем всё это дело и получим:

10111001 => 185


Вот как-то так.


Интересный факт.


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

234*10 = 2340


А чтобы поделить на десять (если нас не интерисует дробная часть, конечно), достаточно убрать последнюю цифру:

234/10 = 23 (и 4 в остатке).


Точно так же можно делать и в двоичной системе, только умножать и делить не на десять, а на два:

1101 * 10 = 11010 (напоминаю: это запись в двоичной системе)

1101 / 10 = 110


Этот приём иногда применяют в программах для ускорения вычислений.


Небольшое теоретическое обоснование


У некоторых может всплыть такой вопрос: почему при разложении числа на степени двойки не может оказаться, что какой-то степени будет больше, чем одна?

Объясняю. Допустим, у нас есть число в котором 2^7 помещается два раза, т.е. это получается 2*2^7, а это уже равно 2^8.

Всё :)

0
Автор поста оценил этот комментарий

https://ru.wikipedia.org/wiki/Двоичная_система_счисления
Наслаждайтесь.
Ведите блог с описанием. Но довольно специфические знания: "двоичная система счисления" нафиг не нужны на пикабу.
Что рейтинг поста и показал.

И да, пока искал ссылку, убедился что даже в вике понятнее и нагляднее написано, потому что там есть ФОРМАТИРОВАНИЕ.  

раскрыть ветку (1)
Автор поста оценил этот комментарий

В чём то Вы, вероятно,правы, но попробовать стоило :)

Автор поста оценил этот комментарий

нах*я это нужно? 
Это как..."Здравствуйте, сейчас я буду учить вас говорить слова по слогам. "

раскрыть ветку (1)
Автор поста оценил этот комментарий
Ко мне регулярно приходят люди с просьбой помочь научиться программировать. Люди совершенно разных возрастов и разной подготовки.

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

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

Думаю, Вы правы. Просто я пишу из своей головы. А там картинок нет - там тексты да алгоритмы. Ну, еще и нехватка времени и природная лень заставляет минимизировать работу, а картинки мне долго рисовать. :)

показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества