Преобразования между системами счисления – легко и с улыбкой


Начнем опять с десятеричной системы.

Возьмем для примера то же число 167 (не знаю, почему именно оно пришло мне в голову), и представим это число так:

167 = 1*100 + 6*10 + 7*1

Не правда ли, это справедливо? Ну значит, справедливо и следующее:

167 = 1*102 + 6*101 + 7*100

(любое число в 0-й степени равно 1).

Что мы сделели? Мы умножили значение каждого разряда на основание системы счисления, возведенное в степень, равную номеру разряда (если младший разряд принять за 0-й). Не понятно?…

Объясняю.
Число 167 имеет три разряда. Нумерация разрядов всегда идет справа-налево, от младшего к старшему. Все нормальные люди считают с единицы. Ненормальные, то есть – мы, электронщики-программисты, считают с нуля. Запомните это. С НУЛЯ!!! Все и всегда! Так вот, именно поэтому младший разряд будет – нулевой.

Итого получаем:

0 разряд = 7
1 разряд = 6
2 разряд = 1

Система счисления – десятичная. Значит, ее основание – 10. Возводим 10 в степень, равную номеру каждого разряда и умножаем на то, что получилось значение разряда. Потом все это складываем. Вот так просто!

Переходим (возвращаемся) к двоичной системе.

Все абсолютно так же.
Число 10100 можно представить как:

1*24 + 0*23 + 1*22 + 0*21 + 0*20

или

16 + 0 + 4 + 0 + 0.

Путем чрезвычайно сложных расчетов, можно получить сумму этого всего. Она равна 20.

Итак, господа. Только что мы преобразовали двоичное число в десятеричное.
Оказалось, что 101002 = 2010.

Сделать это проще простого, если знать степени двойки. Лично я наизусть с ходу называю все целые степени двойки от 0 до 18. Дальше мне не особо нужно, а если нужно – всегда можно вычислить. А пока что, запомните хотя бы до 16-й:

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024
211 = 2048
212 = 4096
213 = 8192
214 = 16384
215 = 32768
216 = 65536
и т.д.

Ну теперь давайте преобразуем 8-разрядное двоичное число в десятеричное. Для этого нарисуем такую табличку:

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

Возьмем, к примеру, число 10100111.
Вписываем его в таблицу:

Теперь умножаем значение разряда на множитель этого разряда и складываем результаты:

1*128 + 0*64 + 1*32 + 0*16 + 0*8 + 1*4 + 1*2 + 1*1 =
= 128 + 32 + 4 + 2 + 1 = 167.

Опа! Получилось наше родимое число 167. Чудеса! :)
Все! Преоборазовали!

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

Преобразование 10 ->2

Теперь проделаем то же самое, но – в обратную сторону. Возьмем мы то же самое число 167, и внимательно на него посмотрим. Посмотрели? Теперь посмотрите в таблицу (а лучше - вспомните), какая наибольшая степень двойки еще меньше этого числа.

Очевидно, это 128. Значит, опять рисуем таблицу.

Множитель старшего разряда в ней будет равен 128. Далее – 64, 32, и т.д… Всего – 8 разрядов.

Сразу ставим в старший разряд 1. Дальше станет понятно почему.

1xxxxxxx

Теперь отнимаем от 167 множитель 128.

167 - 128 = 39

Так как 39 меньше следующего множителя (64), в следующий разряд пишем 0.

10xxxxxx

Так как ничего не отняли – остаток прежний – 39. Смотрим следующий множитель: 32. Он меньше, чем 39, значит его можно отнять. Отнимаем, и ставим в разряд единицу:

101xxxxx

Осталось число 7. Оно явно меньше чем 16 или 8, поэтому два следующих разряда будут равны 0:

10100xxx

Дальше:

7 - 4 = 3

101001xx

3 - 2 = 1

1010011x

1 - 1 = 0

10100111

Заметим. В конечном итоге у нас должен получиться НОЛЬ! Если ноль не получился – значит мы где-то напортачили.

Вот. Не смею вас более мучить. Пока что – это все.

Источник: www.radiokot.ru


Добавил:  Павел (Admin)  [email protected] | 

Автор:   http://www.radiokot.ru Рейтинг@Mail.ru