Двоичные и шестнадцатеричные значения


Будучи системным администратором, вы частенько будете встречать такие термины, как 48-битовый адрес или 18-битовая сетевая маска. Я часто встречал системных администраторов, которые только кивают и улыбаются, когда слышат нечто подобное, и при этом думают: «Да неважно, ты прямо скажи, что я должен делать». К сожалению, математика — это неотъемлемая часть работы, и вы обязаны знать двоичное исчисление. Понимание этой области является одним из признаков, которые отличают любителей от профессионалов. Вам не нужно читать эту книгу, если вы хотите остаться любителем.

Возможно, вы уже бормочете себе под нос: «Но я знаю это!» Тогда просто пропустите этот раздел. Но не обманывайте себя, если вы этого еще не знаете.

Возможно, вы уже знаете, что компьютер интерпретирует данные как нули и единицы и что одна единица или один ноль составляют один бит. Когда протокол задает биты, он указывает это число согласно представлениям компьютера. 32-битовое число имеет 32 цифры, каждая из которых может быть представлена нулем или единицей. Возможно, вы уже имеете представление о двоичных операциях, или операциях с числами по основанию 2, которые наверняка изучались вами в средней школе и быстро забылись. Двоичная система — это просто другой способ представления чисел, с которыми люди работают каждый день.

Десятичная математика (числа с основанием 10) ежедневно используется нами при покупке пиццы или для подсчета баланса чековой книжки. В ней задействованы цифры от 0 до 9. Чтобы получить число, превышающее самую большую цифру, слева к этой цифре добавляется другая, а текущая становится равной нулю. Это правило «переноса единицы», которое вы изучили много лет назад и сейчас используете неосознанно. В двоичной математике есть только цифры 0 и 1. Чтобы получить число, превышающее самую большую цифру, слева к этой цифре добавляется другая, а текущая становится равной 0. Та же самая десятичная математика, только с восемью пропавшими пальцами. В качестве примера в табл. 6.1 показаны первые несколько десятичных чисел, преобразованные в двоичные значения.

Таблица 6.1. Десятичные и двоичные числа

Десятичные Двоичные
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000

Число из 32 бит, например IP-адрес, представляет собой строку из 32 нулей и единиц. MAC-адреса, используемые протоколом Ethernet, представляют собой 48-битовые числа и состоят из 48 нулей и единиц.

Ради интереса могу заметить, что в UNIX в некоторых случаях используются шестнадцатеричные числа (например, МАС-адреса и сетевые маски). Шестнадцатеричные числа имеют длину 4 бита. Двоичное число 1111, в котором все четыре бита представлены единицами, эквивалентно десятичному числу 15, а это означает, что в шестнадцатеричной системе используются цифры от 0 до 15. Сейчас некоторые из вас, глядя на двузначное число 15, которое должно представлять единственную цифру, думают — какую травку я курю и нельзя ли организовать поставку такой замечательной травки себе. Для представления чисел от 10 до 15 в шестнадцатеричной системе счисления используются символы от A до F. Когда счет доходит до самой большой цифры и нужно добавить еще единицу, текущая цифра устанавливается равной нулю, а слева добавляется еще одна цифра. Например, последовательность чисел от 1 до 17 в шестнадцатеричной системе выглядит следующим образом: «1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11». Снимайте обувь и считайте на пальцах, пока не поймете.

Шестнадцатеричные числа обычно помечаются префиксом 0x. Например, число 0×12 — это шестнадцатеричный эквивалент десятичного числа 18, тогда как 18 — это просто число 18. Если шестнадцатеричное число не помечено префиксом 0x, значит оно находится на месте, где допустимы только шестнадцатеричные числа, например в MAC-адресе. Наличие символов от А до F однозначно говорит о том, что число шестнадцатеричное, но это не самый надежный признак, потому что шестнадцатеричные числа могут не содержать шестнадцатеричных цифр, так же как многие десятичные числа могут состоять только из двоичных цифр.

Когда вы работаете с шестнадцатеричными, десятичными и двоичными числами, было бы желательно пользоваться научным калькулятором. Современные средние калькуляторы имеют функции преобразования чисел между этими тремя системами счисления, как и большинство программных калькуляторов.

Биты по байтам

Компьютеры преимущественно работают с байтами, где каждый символ представлен 8-битовым числом. Единственное исключение — сетевой стек, где все сущее представлено отдельными битами. Так, например, файл размером 5 мегабайтов может находиться в компьютере, подключенном к сети со скоростью передачи данных 10 мегабитов (в секунду — прим. научн. ред). Не путайте их!

Комментарии запрещены.