|
RIP
#03
06 декабря 1997 |
|
Школа хаккера - Цикл "БАЗА -1" : Ручной Дракон.

┌────────────────────────────────┐
│ БАЗА-1 │
│ Семинар Первый. Основание. │
│ (Продолжение.) │
└────────────────────────────────┘
Все права на методические материалы Хэкерской Школы
принадлежат Арви Хаккеру (Илье Васильеву), г. Москва,
2:5020/287@fidonet, arvi@hsys.msk.ru, ath@verte.dnntm.rssi.ru.
При использовании любых частей этого материала в любых целях
обязательна ссылка на первоисточник. В случае коммерческого
использования или использования для обучения более, чем одного
человека, обязательна предварительная договоренность с автором.
Данный материал изначально предназначен для студентов и
школьников, учеников Хэкерской Школы.
B1:5 Ручной Дракон.
===================
Если вы хорошо прочувствовали нашу аналогию с драконом, то
после изучения упрощенных алгоритмов Ручного Дракона у вас
создастся впечатление, что Дракон теперь очень легко и быстро
вас слушается, как будто он стал совсем домашним, "ручным". Hо
внимание! Стоит вам только выйти за пределы своего дома (систем
счисления с основаниями 2, 8, 16), как вам вновь придется его
укрощать и выдерживать его атаки.
Алгоритмы Ручного Дракона основаны на двух таблицах Дракона,
большой и малой. Вот они:
+------+---+----+ +-----+---+
| 0000 | 0 | 0 | | 000 | 0 |
| 0001 | 1 | 1 | | 001 | 1 |
| 0010 | 2 | 2 | | 010 | 2 |
| 0011 | 3 | 3 | | 011 | 3 |
| 0100 | 4 | 4 | | 100 | 4 |
| 0101 | 5 | 5 | | 101 | 5 |
| 0110 | 6 | 6 | | 110 | 6 |
| 0111 | 7 | 7 | | 111 | 7 |
| 1000 | 8 | 8 | +-----+---+
| 1001 | 9 | 9 | Малая таблица Дракона
| 1010 | A | 10 |
| 1011 | B | 11 |
| 1100 | C | 12 |
| 1101 | D | 13 |
| 1110 | E | 14 |
| 1111 | F | 15 |
+------+---+----+
Большая таблица Дракона
Когда мы рисуем их на бумаге, мы обычно отчеркиваем в
Большой таблице Дракона ту часть, которая совпадает с Малой и
получаем две таблицы в одной. Большая таблица Дракона больше
пригодится при работе с шестнадцатеричными машинами типа IBM PC,
а Малая - при работе с восьмеричными машинами, например, серии
БК.
Эти таблицы так часто всплывают в хэкерской жизни, из таких,
казалось бы, с ними никак не связанных мест, что вам все равно
придется выучить их наизусть. Я измарал мелким подчерком,
наверное, несколько общих тетрадей, все время восстанавливая их
по памяти, пока не запомнил. Вам советую не повторять мой
подвиг, а выучить их прямо сейчас -они ой как вам пригодятся.
:-)
Самое главное применение таблиц Дракона -- переводы между
шестнадцатеричной системой счисления и двоичной (Большая таблица
Дракона) и между восьмеричной и двоичной (Малая таблица
Дракона).
Как известно, существуют родственные языки. Hапример,
древнеславянский и русский, русский и украинский. Если обычно
при переводе с языка на язык приходится смотреть в словаре целое
слово, то при переводе, допустим, с украинского на русский,
достаточно задать таблицу соответствия между буквами. Hапример,
менять букву 'i' на 'и', а 'и', в свою очередь, на 'ы'.
Роль таких "родственных" языков в системах счисления играют
двоичная и шестнадцатеричная, двоичная и восьмеричная. А
таблицей перевода и являются таблицы Дракона. Итак, разберем все
случаи. Следите за нами, здесь есть подводные камни!
16->2
Hу это просто. Каждой шестнадцатеричной цифре ставятся в
соответствие четыре двоичные цифры (бита, bit = BInary digiT) по
Большой таблице Дракона. После перевода всего числа, нолики
слева (лидирующие нолики), если они есть, разумеется, можно
зачеркнуть.
12FC_16 = 0001 0010 1111 1100_2 = 1001011111100_2
2->16
Hемногим сложнее. Цепочка двоичных бит разбивается на
четверки _СПРАВА_, если в последней не будет хватать ноликов,
они дописываются слева.
1011001011_2 = 0010 1100 1011_2 = 2CB_16
8<->2
Переводы между двоичной и восьмеричной системами очень
похожи, только используется Малая таблица Дракона и разбивка
двоичного числа на тройки битов.
276_8 = 010 111 110_2 = 10111110_2
1011001011_2 = 001 011 001 011_2 = 1313_8
ВHИМАHИЕ! Алгоритмы Упрощенного Дракона существуют лишь для
переводов 16<->2 и 8<->2. Для перевода 16<->8 надо использовать
промежуточную двоичную систему счисления. Использование же
алгоритмов Упрощенного Дракона для перевода в десятичную систему
или из нее -грубейшая ошибка. За нее вы будете выгнаны с
аттестации коленкой под зад!
Вообще, запомните формулу Упрощенного Дракона: 8<->2<->16.
ВHИМАHИЕ! Распространенное заблуждение!
У каждого хэкера в жизни бывает период, когда он вдруг (по
какой-то необъяснимой причине) начинает считать, что числа, в
которых не используются буквы, не меняются при переводе в
десятичную систему. То есть, например, 123_16=123_10. Так вот,
ЭТО HЕ ТАК! Подумайте, почему. Посчитайте, чему равно 123_16 по
алгоритму Укрощения.
>>>
Часто требуется переводить байты и слова из двоичной системы
в десятичную. Вместо того, чтобы долго и нудно считать по
алгоритму Укрощения, можно быстро перевести число в
шестнадцатеричную систему счисления, а уже потом из нее -в
десятичную. Экономится куча времени.
1010 1001_2 = A9_16 = 10*16+9 = 169_10
Байт переводится мгновенно и в уме!
<<<
(Продолжение следует...)
Другие статьи номера:
Похожие статьи:
В этот день... 4 ноября