Раздел: Это нужно знать

Системы счисления

Система счисления — это — символический метод записи чисел, представление чисел с помощью письменных знаков (wiki); т.е. определённый способ отображения чисел и правила действий над ними. В основном люди используют десятичную систему счисления, а компьютеры — двоичную. Двоичная система имеет ряд преимуществ по сравнению с другими системами счисления: для её реализации нужны достаточно простые технические устройства, всего с двумя устойчивыми состояниями (например, триггеры), а не с десятью или шестнадцатью. Это делает систему из таких устройств более надёжной и устойчивой. Для логических преобразований информации в таких системах используется булева алгебра, с помощью которой и происходят все вычисления.  Поскольку в компьютерной технике можно встретить не только двоичную, но практически все системы счисления (самыми распространёнными являются двоичная, восьмеричная, десятичная и шестнадцатеричная), предлагаю разобраться в переводе чисел из одной системы в другую.

Чтобы перевести целое число x из десятичной системы счисления в любую другую (например, q-ичную, т.е. систему с основанием q), нужно разделить x на q с остатком, после чего неполное частное, полученное от этого деления, снова разделить на q с остатком, и продолжать это действие до тех пор, пока неполное частное не станет меньше делителя — т.е. меньше q. Затем следует прочитать остатки от деления от последнего к первому, начиная с последнего неполного частного, это и будет искомым числом. Приведём примеры с разными системами счисления:

При переводе чисел из одной системы в другую, нужно особое внимание уделить следующему моменту: искомое число нам нужно представить в виде последовательности цифр в искомой(!) системе счисления, а при переводе из одной системы в другую с помощью деления, мы записываем ответ в исходной(!) системе. Это значит, что каждую цифру, полученную при переводе, нужно представить в искомой системе.

В нашем первом случае, как видно из таблицы, когда мы переводим число из системы с основанием q1=10 в систему с основанием q2=2, проблем не возникает, потому что цифры, представляющие числа в исходной и искомой системе совпадают, то есть, 010=02, и 110=12, и никаких дополнительных манипуляций производить не нужно. С восьмеричной системой то же самое — поскольку все числа, которыми могут быть представлены остаток или последнее неполное частное в десятичной системе, совпадает с числами в восьмеричной системе. В случае с шестнадцатеричной системой получилось точно так же: числа 5 и 7 в искомой системе представлены так же, как и в исходной, но в другом случае это может быть и не так, например:

Теперь, давайте разберёмся с дробной частью числа. Чтобы перевести десятичную дробь G в систему счисления q, необходимо умножить G на основание новой системы q, записанное в  десятичном виде, затем дробную часть полученного произведения снова умножить на q, и повторять это действие до тех пор, пока дробная часть не станет равна нулю или не будет достигнута требуемая точность искомого числа. Ответом будет являться последовательность целых частей полученных произведений, записанных в порядке их получения. Эти числа, как и в предыдущем случае, должны быть представлены для ответа в искомой системе счисления. Не забудьте, что мы ищем — дробную часть, значит найденное число нужно написать после нуля с запятой.

Если дробная часть не становится равной нулю, это действие можно производить бесконечно(или очень много раз). В связи с этим, вычисляя лишь некоторое количество знаков после запятой, появляется погрешность. Её можно рассчитать по формуле, где q — это основание новой системы, а k — это количество знаков после запятой:

Пример:

Соответственно, погрешность для этих случаев будет такова:

Кстати, можно заметить, что при переводе из десятичной системы в шестнадцатеричную, число 0,43 получило периодичность:

Для перевода десятичного числа с дробной частью в другую систему счисления, необходимо отдельно переводить обе части — целую и дробную. То есть, основываясь на вышеописанных примерах, можно сказать, что число 87,4310 =57,6(E147A)16. Перевод числа обратно, в десятичную систему из любой другой системы, обычно более лёгок. Если число x в q-ичной системе представить в виде набора чисел, его составляющих, где m и n представляют разряд каждого из составляющих чисел,

то для того, чтобы найти x10, необходимо решить многочлен средствами десятичной арифметики :

Приведём пример. Мы уже переводили числа 87 и 0,43 из десятичной системы в восьмеричную, и у нас получились числа 127 и 0,3341217 соответственно. Теперь, переведём одно число 127,3341217 из восьмеричной системы обратно, в десятичную :

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

Комментировать

Комментарии

три × два =