Системы счисления
Системы счисления, преобразование систем счисления, примеры перевода систем счисления
В мире существует много разных систем счисления: десятичная, двоичная, восьмеричная, двенадцатеричная, двадцатеричная, шестнадцатеричная, шестидесятеричная и др.
Каждую систему счисления мы разбирать не будем, так как нам это не пригодится, гораздо важнее разобраться в двух системах счисления для решения любых сетевых задач: десятичной и двоичной, я называю их «системами счисления в IP».
Для успешной сдачи тестов, экзаменов, контрольных и прочих работ, вам также потребуется знать о восьмеричной и шестнадцатеричной системе счисления. С ними гораздо легче будет разобраться, если вы овладеете двоичной системой счисления.
Итак, разбираемся в первых двух.
Системы счисления в ip
При делении сетей на подсети мы часто будет переводить ip адрес и маску из десятичной системы счисления в двоичную, и обратно. Именно поэтому я их назвал системами счисления ip.
Давайте скорее познакомимся с ними, научимся преобразовывать между собой и посмотрим много простых и понятных примеров.
Десятичная система счисления
Десятичная система счисления известна всем нам очень подробно, мы ею пользуемся каждый день (при оплате за транспорт, подсчёте количества штук чего либо, арифметические операции над числами). В десятичную систему счисления входят 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Десятичная система счисления является позиционной системой, потому что зависит от того, в каком месте числа (в каком разряде, на какой позиции) стоит цифра. Т.е. 001 – единица, 010 – это уже десять, 100 – а это сто. Мы видим, что менялась только позиция одной цифры (единицы), а число менялось очень значительно.
В любой позиционной системе счисления позиция цифры представляет собой цифру, помноженную на число основания системы счисления в степени позиции этой цифры. Посмотрите на пример, и станет всё ясно.
Число десятичное 123 = (1 * 10^2) + (2 * 10^1) + (3 * 10^0) = (1*100) + (2*10) + (3*1)
Число десятичное 209 = (2 * 10^2) + (0 * 10^1) + (9 * 10^0) = (2*100) + (0*10) + (9*1)
Двоичная система счисления
Двоичная система счисления нам может быть и вовсе не знакома, но поверьте, она намного проще, чем привычная нам десятичная система. В двоичную систему счисления входят всего 2 цифры: 0 и 1. Это сравнимо с лампочкой, когда она не горит – это 0, а когда свет включен – это 1.
Двоичная система счисления, как и десятичная, является позиционной.
Число двоичное 1111 = (1*2^3) + (1*2^2) + (1*2^1) + (1*2^0) = (1*8) + (1*4) + (1*2) + (1*1) = 8 + 4 + 2 + 1 = 15 (десятичное).
Число двоичное 0000 = (0*2^3) + (0*2^2) + (0*2^1) + (0*2^0) = (0*8) + (0*4) + (0*2) + (0*1) = 8 + 4 + 2 + 1 = 0 (десятичное).
Хотели мы того, или нет, но мы уже преобразовали 2 двоичных числа в десятичные. Рассмотрим более подробно дальше.
Из двоичной в десятичную систему счисления
Из двоичной системы счисления в десятичную систему счисления переводить не сложно, надо выучить степени двойки от 0 до 15, хотя в большинстве случаев будет достаточным от 0 до 7. Это связано с восемью битами каждого октета в ip адресе.
Для преобразования двоичного числа надо будет каждую цифру помножить на число 2 (основание системы счисления) в степени позиции той цифры, а затем сложить те цифры. В примерах ниже всё будет ясно.
Начнем с простых чисел и закончим числами из восьми цифр.
Число двоичное 111 = (1*2^2) + (1*2^1) + (1*2^0) = (1*4) + (1*2) + (1*1) = 4 + 2 + 1 = 7 (десятичное).
Число двоичное 001 = (0*2^2) + (0*2^1) + (1*2^0) = (0*4) + (0*2) + (1*1) = 0 + 0 + 1 = 1 (десятичное).
Число двоичное 100 = (1*2^2) + (0*2^1) + (0*2^0) = (1*4) + (0*2) + (0*1) = 4 + 0 + 0 = 4 (десятичное).
Число двоичное 101 = (1*2^2) + (0*2^1) + (1*2^0) = (1*4) + (0*2) + (1*1) = 4 + 0 + 1 = 5 (десятичное).
Точно таким же образом можно преобразовать любое двоичное число в десятичное.
Число двоичное 1010 = (1*2^3) + (0*2^2) + (1*2^1) + (0*2^0) = (1*8) + (0*4) + (1*2) + (0*1) = 8 + 0 + 2 + 0 = 10 (десятичное).
Число двоичное 10000001 = (1*2^7) + (0*2^6) + (0*2^5) + (0*2^4) + (0*2^3) + (0*2^2) + (0*2^1) + (1*2^0) = (1*128) + (0*64) + (0*32) + (0*16) + (0*8) + (0*4) + (0*2) + (1*1) = 128 + 0 + 0 + 0 + 0 + 0 + 0 + 1 = 129 (десятичное).
А так же когда вам надоест считать действия с нулями, то пропускайте их. Ваши подсчёты станут краткими и красивыми.
Число двоичное 10000001 = (1*2^7) + (1*2^0) = (1*128) + (1*1) = 128 + 1 = 129 (десятичное).
Число двоичное 10000011 = (1*2^7) + (1*2^1) + (1*2^0) = (1*128) + (1*2) + (1*1) = 128 + 2 + 1 = 131 (десятичное).
Число двоичное 01111111 = (1*2^6) + (1*2^5) + (1*2^4) + (1*2^3) + (1*2^2) + (1*2^1) + (1*2^0) = (1*64) + (1*32) + (1*16) + (1*8) + (1*4) + (1*2) + (1*1) = 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127 (десятичное).
Число двоичное 11111111 = (1*2^7) + (1*2^6) + (1*2^5) + (1*2^4) + (1*2^3) + (1*2^2) + (1*2^1) + (1*2^0) = (1*128) + (1*64) + (1*32) + (1*16) + (1*8) + (1*4) + (1*2) + (1*1) = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = 255 (десятичное).
Число двоичное 01111011 = (1*2^6) + (1*2^5) + (1*2^4) + (1*2^3) + (1*2^1) + (1*2^0) = (1*64) + (1*32) + (1*16) + (1*8) + (1*2) + (1*1) = 64 + 32 + 16 + 8 + 2 + 1 = 123 (десятичное).
Число двоичное 11010001 = (1*2^7) + (1*2^6) + (1*2^4) + (1*2^0) = (1*128) + (1*64) + (1*16) + (1*1) = 128 + 64 + 16 + 1 = 209 (десятичное).
Вот и справились. Теперь переведём всё обратно из двоичной в десятичную.
Из десятичной в двоичную систему счисления
Перевод из десятичной системы счисления в двоичную систему тоже не труден, только вместо сложения потребуется вычитание.
Последовательность перевода в десятичную систему счисления следующая: надо вычесть из переводимого числа ближайшее (меньшее или равное) число к нему из степеней двойки. Затем проделать тоже самое с получившимся значением, и так до нуля. В зависимости от используемой степени двойки записать цифру 1 в нужном разряде двоичного числа, пропуски заполнить единицами.
Смотрите примеры, и вопросы отпадут сами собой.
Число десятичное 7: 7-4=3 - ближайшее меньшее (или равное) число к 7 из степеней двойки это 4 (2^2). Вычитаем из 7 число 4, получаем 3. Затем 3-2=1 - ближайшее меньшее (или равное) число к 3 из степеней двойки это 2 (2^1). Вычитаем из 3 число 2, получаем 1. 1-1=0 - ближайшее меньшее (или равное) число к 1 из степеней двойки это 1 (2^0). Вычитаем из 1 число 1, получаем 0. Всего из нашего числа мы вычли 4, 2 и 1, т.е. 2^2, 2^1 и 2^0. Ставим единицы в разряды по степеням двоек – 111. Если мы считаем октетом, то надо добавить нули – 00000111. Готово.
Чтобы не сбивать вас, уберём слова:
Число десятичное 10: 10-8=2; 2-2=0. Двоичное число – 00001010.
Число десятичное 129: 129-128=1; 1-1=0. Двоичное число – 10000001.
Число десятичное 131: 131-128=3; 3-2=1; 1-1=0. Двоичное число – 10000011.
Число десятичное 127: 127-64=63; 63-32=31; 31-16=15; 15-8=7; 7-4=3; 3-2=1; 1-1=0. Двоичное число – 01111111.
Число десятичное 255: 255-128=127; 127-64=63; 63-32=31; 31-16=15; 15-8=7; 7-4=3; 3-2=1; 1-1=0. Двоичное число – 11111111.
Число десятичное 123: 123-64=59; 59-32=27; 27-16=11; 11-8=3; 3-2=1; 1-1=0. Двоичное число – 01111011.
Число десятичное 209: 209-128=81; 81-64=17; 17-16=1; 1-1=0. Двоичное число – 11010001.
Заключение
Как вы видите, переводить из двоичной системы счисления в десятичную систему счисления не очень сложно. Это преобразование мы будет часто использовать при делении сетей на подсети.
Попробуйте сами преобразовать ваши число и год рождения. Для проверки можете использовать виндовс-калькулятор в инженерном режиме или режиме Программист.
Уделите несколько минут для «систем счисления в ip» - двоичной и десятичной.