Системы счисления
🕛 17.09.2009, 13:28
Понимание порядка представления чисел в двоичной, десятичной и шестнадцатеричной системах счисления является одним из необходимых условий успешного программирования на ассемблере. Не менее важно уметь использовать правила конвертирования числовых данных между этими системами счисления. Причинами этого являются, с одной стороны, двоичная организация современных ЭВМ и, с другой стороны, более привычная для человека работа с числовой информацией на основе десятичной системы счисления.Как известно, системой счисления называется совокупность правил записи чисел. Системы счисления подразделяются на позиционные и непозиционные. Как в позиционных, так и в непозиционных системах счисления используется определенный набор символов - цифр, последовательное сочетание которых образует число. Непозиционные системы счисления появились раньше позиционных. Они характеризуются тем, что в них символы, обозначающие то или иное число (то есть цифры), не меняют своего значения в зависимости от местоположения в записи этого числа. Классическим примером такой системы счисления является римская. В ней для записи чисел используются буквы латинского алфавита. При этом буква I означает единицу, V - пять, X - десять, L - пятьдесят, С - сто, D - пятьсот, М - тысячу. Для получения количественного эквивалента числа в римской системе счисления необходимо просто просуммировать количественные эквиваленты входящих в него цифр. Исключение из этого правила составляет случай, когда младшая цифра находится перед старшей, - в этом случае нужно не складывать, а вычитать число вхождений этой младшей цифры. Например:
DLXXVII = 500 + 50 + 10 + 10 + 5 + 1 + 1 = 577.
Другой пример:
CDXXIX = 500 - 100 + 10 + 10 - 1 + 10 = 429.
В позиционной системе счисления количество символов в наборе равно основанию системы счисления. Место каждой цифры в числе называется позицией. Номер позиции символа (за вычетом единицы) в числе называется разрядом. Разряд 0 называется младшим разрядом. Каждой цифре соответствует определенный количественный эквивалент. Введем обозначение - запись А^ будет означать количественный эквивалент числа А, состоящего из п цифр ак (где k = 0, ..., п - 1) в системе счисления с основанием р. Это число можно представить в виде последовательности цифр:
К) - ап_хап_2... ata0. При этом, конечно, всегда выполняется неравенство а.к< р. В общем случае количественный эквивалент некоторого положительного числа А в позиционной системе счисления можно представить выражением:
А<р)"а.-1*/,"", + в-2-Я"+ -+ в,-/+ а0-ра, (4.1)
где р - основание системы счисления (некоторое целое положительное число), а - цифра данной системы счисления, п - номер старшего разряда числа.
Для получения количественного эквивалента числа в некоторой позиционной системе счисления необходимо сложить произведения количественных значений цифр на степени основания, показатели которых равны номерам разрядов (обратите внимание на то, что нумерация разрядов начинается с нуля).
После такого формального введения можно приступить к обсуждению некоторых позиционных систем счисления, наиболее часто используемых при разработке программ на ассемблере.