Двоичная система для чайников. Часть 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.
Всё :)
Двоичная система для чайников
Здравствуйте, ребята!
Я решил сделать серию постов по информатике для чайников.
Если первый пост пойдёт хорошо, то будет еще несколько в том же духе.
---------------------------------------------------------
Введение
Чтобы провести хирургическую операцию, анатомию знать не обязательно, но вот результаты будут непредсказуемы. Точно так же, чтобы программировать, не обязательно знать, как компьютер устроен изнутри, но иногда такое незнание может привести к душераздирающим последствиям.
Основа основ современного компьютера – ДВОИЧНАЯ СИСТЕМА СЧИСЛЕНИЯ (2-СС). Звучит угрожающе!.. Чтобы понять, что такое ДСС, и научиться с ней работать, надо уметь складывать, умножать и возводить числа в степень. Ок, даю шпаргалку.
Сложение чисел
Пусть у нас есть какое-то число. Допустим, 5. И мы хотим прибавить к нему другое число. Допустим, 3. Как нам это сделать? Давайте, представим число 5 как пять палочек:
|||||
А число 3 как три палочки:
|||
Чтобы сложить их, сначала нарисуем пять палочек, потом допишем к ним еще три:
||||||||
Теперь пересчитаем – получилось 8.
Зря смеётесь! Когда считаем палочками – в Википедии это называется (ВНИМАНИЕ! НЕНОРМОТИВНАЯ ЛЕКСИКА!) «Единичная непозиционная система счисления с единичным весовым коэффициентом». Ну, или попросту будем называть УНАРНАЯ СИСТЕМА СЧИСЛЕНИЯ (1-СС).
В обычной жизни мы (люди) пользуемся ДЕСЯТЕРИЧНОЙ СИСТЕМОЙ СЧИСЛЕНИЯ (10-СС). Она так называется, потому что у нас есть десять цифр. К тому же, она еще и ПОЗИЦИОННАЯ, что означает, что значение (вес) цифры зависит от её положения в записи числа, например, в числах 2, 21 и 211 цифра 2 означает, соответственно, единицы, десятки и сотни.
Десятичная система счисления
Как мы складываем в 10-СС? Например, столбиком:
12
+ 99
Сначала складываем единицы: 2+9 = 11, т.е. при сложении двух единичных чиселок появился новый десяток. Ясное дело, что из них может появиться только один десяток, потому что самое большое, что можно сложить – это 9+9 = 18. Таким образом, разбиваем сложение на кусочки: вместо 12+99 мы делаем 2+9 + 10+90, т.е. единицы и десятки (а потом и сотни) складываем отдельно друг от друга:
12 + 99 = [разобьем на разряды]
= (2+9) + (10+90) = [сложим первые разряды]
= 11 + (10+90) = [снова разобьем на десятки и единицы]
= (1 + 10) + (10 + 90) = [снова перегруппируем, чтобы отделить десятки от единиц]
= 1 + (10 + 10 + 90) = [сложим десятки]
= 1 + (110) = [разобьем на сотни и десятки]
= 1 + 10 + 100
Ясно, что получится 111, но давайте остановимся и посмотрим на эту полученную форму записи:
1 + 10 + 100
Фишка в том, что любое число можно представить как сумму отдельно единиц, отдельно десятков, сотен и т.д., например:
564 = 500 + 60 + 4, 7031 = 7000 + 000 + 30 + 1
Особенность такой записи в том, что мы видим во всех разрядах одну значащую цифру (первую), все следующие за ней цифры – это нули. Запомните этот момент – это важно.
При этом вместо того, чтобы писать 1000, мы можем написать 10^3 (т.е. десять в третьей степени, что можно расшифровать как 10*10*10).
В частности:
7000 = 7*1000 = 7 * 10^3
А всё число 7031 можно расписать так:
7031 = 7*10^3 + 0*10^2 + 3*10^1 + 1*10^0
Напомню, что любое число в нулевой степени даёт единицу, и 10^0 = 1, а любое число в первой степени даёт само себя 10^1 = 10. Еще напомню, что любое число умноженное на 0 даёт 0, т.е. 0*10^2 = 0.
Так вот, наша система счисления называется десятичной именно благодаря этой десятке, которую в степень возводим.
Краткое отступление. Дорогие мои! Не путайте числа и цифры! Путать цифры и числа – это как путать буквы и звуки. Цифра – это просто символ для записи чисел. А число – это абстрактная величина, обычно означающее количество чего-нибудь. Думаю, все поняли. :)
Двоичная система счисления
Теперь, поговорим о 2-СС. Её особенность в том, что в ней есть всего 2 символа для записи чисел: 0 и 1. Что интересно, при этом любое число, которое можно записать в 10-СС, так же можно записать и в 2-СС, и даже в 1-СС!
Двоичная система тоже позиционная и отличается от десятичной тем, что в ней вместо 10 в степень возводится двойка, например, число двоичное число 101101 можно прочитать так:
101101= 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0
= 32 + 0 + 8 + 4 + 0 + 1 = 45 (это уже в десятичной системе)
Начнём с простого: 0+0 = 0, 1+0 = 1, 0+1 = 1
Ничего удивительного, в 10-СС это точно так же выглядит.
Теперь посложнее: 1 + 1 = 10
Ой! Почему десять???
А вот никакие не ДЕСЯТЬ! Это число ДВА. Просто в двоичной записи.
Дальше: 10 + 1 = 11
Нет!!! Это не десять плюс один! Это два плюс один! В 10-СС это выглядит так: 2 + 1 = 3, а в 1-СС так: || + | = |||. Ясно –понятно?
Усложняем программу: 11 + 1 = ?
Хм… сложновато? Давайте упростим! По той же схеме, что и 12 + 99. Не забываем, что всё это в двоичной системе!
11 + 1 = [разобьем на разряды]
= (10 + 1) + 1 = [перегруппируем]
= 10 + (1 + 1) = [О! “1+1” складывать умеем!]
= 10 + 10 = [ну, здесь просто сначала игнорируем нули, складываем 1+1 и потом приписываем 0 к результату]
= 100
Ну, сколько можно??? Это не СТО!!! Если то же самое записать в 10-СС, то получим: 3 + 1 = 4. Т.е. это 100 в записи 2-СС – это ЧЕТЫРЕ.
Ну, и для закрепления материала сложим в 2-СС:
1101 + 1001
= (1000 + 100 + 00 + 1) + (1000 + 000 + 00 + 1)
= (1000 + 1000) + (100 + 000) + (00 + 00) + (1 + 1)
= (10000) + (100) + (00) + (10)
= (10000) + (100) + (00 + 10)
= (10000) + (100) + (10)
= (10000) + 110
= 10110
А по-русски: 13 + 9 = 22
Фредди на все случаи жизни
10 фактов обо мне
10. я уважаю двоичную систему счисления




