0.3. Как записываются числа в разных системах счисления в языках программирования.
Си. В качестве числовых констант в языке Си можно использовать 16-ричные, десятичные и восьмеричные числа. 16-ричные числа предваряются префиксом 0x или 0X: 0xD5, 0X1634. Восьмеричные числа предваряются нулем: 0204.
Турбо Ассемблер. Это транслятор языка для записи машинных команд.
Число обязательно должно начинаться с арабской цифры 0 – 9. Когда Турбо Ассемблер встречает в программе число, он сначала анализирует последний символ числа (суффикс). Вот перечень суффиксов (табл. 0.4). Допускаются как прописные, так и строчные буквы.
Таблица 0.4. Суффиксы чисел в языке Ассемблера.
Суффикс |
Основание |
B – binary |
2 |
O,Q – octal |
8 |
D – decimal |
10 |
H – hexadecimal |
16 |
Если суффикс отсутствует, то число считается десятичным.
Пример. 68, 174d, 956D — десятичные числа, ABCh — ошибка! (Число должно начинаться с цифры, иначе Ассемблер воспринимает его как символическое имя). Чтобы исправить ошибку, нужно предварить такое число нулем. 0ABCh, 174dH, 956Dh, 1011Bh — 16-ричные числа, 1011B — двоичное число.
Упражнение. Определить, какие из следующих чисел правильно записаны на языке Ассемблера, указать для них систему счисления: a) 0A5; b) 102B; c) ffffh; d) 6234; e) 6234h.
На практике суффикс D обычно не используется. Достаточно запомнить, что в программе на языке Ассемблера число должно начинаться с 0 – 9, и не забывать ставить суффиксы H и B у 16-ричных и двоичных чисел.
Казалось бы, приведены излишние подробности. Но при использовании отладчика Turbo Debugger (сокращенно TD) у начинающих нередко возникают непонятные для них ситуации. Отладчик по умолчанию воспринимает числа как 16-ричные. Предположим, отладчик запрашивает адрес — вводим, допустим, число 180с (без суффикса h) — всё в порядке (отображается информация, расположенная по адресу 180Ch). Но если вводим 180d, то с удивлением видим, что отладчик отображает информацию, начиная с адреса 00B4h, а если вводим 1A0D, то отладчик выдает сообщение: Syntax error (синтаксическая ошибка), и обращение к Справке (Help) ничего не проясняет. Теперь вы должны понимать причины такой реакции отладчика.