RIP #04
13 декабря 1997

Школа хаккера - Цикл "БАЗА -1": Обозначения, Арифметика.

<b>Школа хаккера</b> - Цикл
              ┌────────────────────────────────┐
              │              БАЗА-1            │
              │   Семинар Первый.  Основание.  │
              │ (Окончание. Начало в RIP#1-#3) │
              └────────────────────────────────┘

                       B1:6 Обозначения.
                       =================

    Hа  самом  деле,  такую  глобальную роль шестнадцатеричная и
восьмеричная  системы  счисления  играют исключительно благодаря
алгоритмам  Ручного Дракона. Внутри машина считает исключительно
"по   двоичному".   Шестнадцатеричная   (или   восьмеричная,  на
DEC'овских  машинах)  система счисления позволяет вместо длинных
цепочек ноликов и единиц писать короткие числа, делает хэкерскую
жизнь  более  разнообразной.  Эти  системы - промежуточное звено
между машиной и человеком, между двоичной и десятичной системами
счисления.

    Роль  систем  счисления огромная. К примеру, права доступа к
файлу в системе UNIX изменяются из shell'а командой chmod. И эта
команда  требует задания аргумента (прав доступа) в восьмеричной
системе счисления! Так команда

    chmod 666 /etc/passwd

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

    В  различных  языках  программирования числа в этих системах
обозначаются   по-разному.  Вот  сводная  таблица  для  основных
языков:

+-------------+-------+--------+--------+----------------+
|             | C/C++ | Pascal |  BASIC |    Assembler   |
+-------------+-------+--------+--------+--------+-------+
| DECimal     |   12  |    12  |  12    | 12,12d |   12T |
| HEXadecimal |  0xC  |    $C  | &hC    |   0Ch  |       |
| OCTal       |  014  |   нет  | &o14   |   14o  |   14Q |
| BINary      |  нет  |   нет  | &b1100 | 1100b  | 1100Y |
+-------------+-------+--------+--------+--------+-------+

    В B1:1 мы отметили, что нули в начале числа не влияют на его
значение. Создатели языка C решили по другому. Поскольку никто в
здравом  уме  не  начинает  числа  с  нуля - кому охота набивать
лишнии  нулики,  ноль  в  начале  они используют для обозначения
восьмеричного числа.

    При  всех способах записи регистр букв неважен. Даже строгий
на  регистры  C позволяет начинать шестнадцатеричные числа как с
0x,  так  и  с  0X.  Кстати,  гуру Киевского Центра нашей Школы,
Сергей  Головко  (2:463/140),  сообщил,  что  в  ранних  версиях
компиляторов  C различных фирм шестнадцатеричные числа надо было
начинать с 0x0, иначе они глюкали.

    При  программировании  на  ассемблере если шестнадцатеричное
число  начинается с буквы, перед ним обязательно должен ставится
ноль.  Иначе  ассемблер подумает, что вы имели в виду переменную
Ch,  а  не число C_16. Ряд людей с низким уровнем интеллекта, не
способным   вместить  это  правило,  ставят  ноль  впереди  всех
шестнадцатеричных  чисел.  Хуже всего, когда такие люди начинают
писать учебники...

   [IBM PC teaching on]

    Суффиксы  T,  Q  и  Y  введены в ассемблер MASM сравнительно
недавно.  Дело  в  том, что с помощью директивы .RADIX ассемблер
позволяет  менять  систему  счисления, действующую по умолчанию.
Раньше,  когда  систему счисления изменяли на шестнадцатеричную,
числа  вроде  12D,  которые  с первого взгляда являются обычными
шестнадцатеричными,  интерпретировались как 12_10. Это порождало
сеть мелких незаметных психоделических ошибок, мешавших чайникам
использовать .RADIX 16.

   [IBM PC teaching off]

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

>>>

    Для перевода чисел в BASIC'е из десятичной системы счисления
в   шестнадцатеричную,   двоичную  и  восьмеричную  используются
функции HEX$, BIN$ и OCT$.

    Для   перевода  чисел  из  этих  систем  в  десятичную  надо
воспользоваться хитростью.

    ?VAL("&hFC")

<<<

                        В1:7 Арифметика.
                        ================

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

   12A3h   10011b   220_3
  - 134h  +10101b  + 11_3
   ----   ------   ----
    16Fh  101000b  1001_3

    Попробуйте самостоятельно решить кучу примеров на сложение и
вычитание в "компьютерных" системах счисления и не только.

   14A3h   1701o | 11o    1101
  *  21h  -11    +-----  *1011
  -----    --    | 152o   ----
   14A3     60            1101
 +2946     -55         + 1101
  -----     --          0000
  2A903h     31        1101
            -22       --------
             --       10001111
              7

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

   [IBM PC teaching on ]

    Программа  hiew  позволяет  вывести  на  экран  дамп  файла.
Программа  debug.exe  имеет  команду  d, выводящую на экран дамп
(dump)  памяти.  Даже  Norton Commander позволяет по F4 выводить
содержимое файла в шестнадцатеричном виде.

    Теперь   вы   должны   очень   хорошо  представлять  себе  и
чувствовать  шестнадцатеричную  и  другие системы. Hаконец-то вы
сможете разобраться в дампе.

   [IBM PC teaching off]

    Существуют   специальные   шестнадцатеричные   калькуляторы,
позволяющие   считать  в  этих  широкораспространенных  системах
счисления.  Я  рекомендую  вам  CITIZEN SRP-75 и его аналоги. Он
недорогой и без графики, но, помимо шестнадцатеричной арифметики
и логики, он еще и программируемый! 128 шагов!
                                                      Удачи!
                                                   Аpви  Хаккеp
                                                    (AtH//HPG)

 Ars: На этом мы прерываем публикацию Школы. Как бы кто к ней не
относился, но определенные знания, согласитесь,почерпнуть из нее
можно было. Во всяком случае, все, кто желали, это сделали...



Другие статьи номера:

7 Origins - Семерка лучших origin'ов-мудрых и не очень выражений.

BBS news - График работы BBS'oк.

Marazm - Юмор.

Post... - Как будут выглядеть похороны RIP'a ?

ZX-news - Завершается работа над проектом "Minsk map". Скоро выйдет новый номер газеты Funny 5.

Вступление - Этот мир уже ничто не спасет.

Игрушки - О содержании журнала "ZX-Format 7".

Мнение - Сага о Ламерах.

Школа хаккера - Цикл "БАЗА -1": Обозначения, Арифметика.

Эпилог


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Новости - Wlodek Black в ZXNet, первый номер нового печатного журнала, по ZX-Spectrum "SPECTATOR"! и др.
ДЕЛАЙ SAM - SEGA MD2 JOYPAD >> ZX.
Стихи - Программистам-эмигрантам.
Очумелые ручки - Снова о ZX-NEXT HDD
SPECCY - Хай живет Спектрум.

В этот день...   21 ноября