В десятично-точечной нотации каждое 32-битное число IP-адреса представляется в виде четырех десятичных групп, значение каждой из которых лежит в диапазоне 0—255, например 192.168.0.225. Эти числа представляют четыре 8-битных значения, составляющих 32-битный адрес. В любой нотации каждая из четырех групп называется октет. Но только двоичная форма позволяет наглядно увидеть значение каждого бита. Например, IP-адрес 192.168.0.225 в двоичной форме выглядит так: 11000000 10101000 00000000 11100001. В IP-адресах октеты и биты считаются слева направо. Первый октет соответствует первому слева, а биты с 1 по 8 соответствуют первым восьми битам, начиная с самого левого. Второй октет— это следующие восемь битов (9—16), затем идет третий октет (биты 17—24), а замыкает последовательность четвертый октет (биты 25—32). В десятично - точечной нотации октеты отделяются точками, а в двоичной — пробелами.
В табл. 1.1 показаны экспоненциальное и десятичное представление битов в двоичном октете. Обратите внимание: если смотреть слева направо, то первый бит дает значение 128, а каждый последующий бит — половину значения предыдущего. И, наоборот, в направлении справа налево, начиная с восьмого бита (значение 1), цена каждого последующего бита в два раза больше, чем предыдущего.
Обратите внимание, что вклад бита в общую сумму ненулевой, только если он содержит 1. Например, если первый бит — 1, ему соответствует десятичное значений 128. Если же его значение — 0, то и десятичное значение равно нулю. Октету со всеми битами; равными 1, соответствует десятичное значение 255. Если все биты содержат 0, десятичное значение октета равно 0.
Таблица 1.1. Представление битов октета в двоичной нотации
Пример перевода из двоичной нотации в десятичную.
Пусть первый октет IP-адреса в двоичном представлении выглядит так: 10101100
Первый, третий, пятый и шестой биты содержат 1, а остальные — 0. Для упрощения решения нарисуем таблицу перевода, в которой отобразим возможные веса битов октета (см. табл. 1.2.):
Таблица 1.2.Пример перевода двоичного числа в десятичное
Сложим десятичные эквиваленты каждого бита и найдем десятичную сумму октета: 1-й бит (128) + 3-й бит (32) + 5-й бит (8) + 6-й бит (4) = сумма октета (172) Поскольку сумма составляет 172, первый октет нашего IP-адреса в десятичной форме равен 172. Применив этот же метод, можно преобразовать полный IP-адрес вида 10101100 00010001 00000111 00011011 в десятично-точечное представление: 172.17.7.27.
Пример перевода из десятичной нотации в двоичную
Перевод октета из десятичной формы в двоичную осуществляется записью 1 или 0 в соответствующий бит октета слева направо, пока не будет получено искомое десятичное число. Если запись 1 в очередной бит приводит к тому, что полученная сумма превосходит десятичное число, просто запишите в этот бит 0 и перейдите к следующему. Допустим, надо перевести IP-адрес 172.31.230.218 в двоичный вид. Первым делом запишите последовательность возможных весов битов в таблицу 1.3:
Таблица 1.3. Таблица для перевода чисел в двоичную систему счисления
Начнем с первого числа — 128. Поскольку 128 меньше 172, запишем 1 в первый бит, а наша промежуточная сумма будет 128. Затем посмотрим вес второго бита — 64. Так как 128 + 64 больше 172, второй бит установим в 0. Затем перейдем к третьему биту, вес которого — 32. 128 и 32 в сумме дают меньше 172, поэтому запишем в этот бит 1. Промежуточная сумма становится 128 + 0 + 32=160. Перейдем к четвертому биту, его вес — 16. 160 и 16 в сумме дают больше 172, поэтому пишем 0. Вес пятого бита — 8. Сумма 160 + 8 меньше 172, пишем в пятый бит 1, а промежуточная сумма становится 128 + 0 + 32 + 0 + 8 = 168. И, наконец, вес шестого бита — 4, сумма 168 и 4 равна 172, т. е. искомому числу. Поэтому пишем 1 в шестой бит, а оставшиеся седьмой и восьмой биты заполняем нулями.
Таким образом, первый октет в двоичной форме выглядит так: 10101100
Выполнив аналогичные операции с остальными октетами получим двоичное представление адреса 172.31.230.218: 10101100 00011111 11100110 11011010