Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Позиционные и непозиционные системы счисления



 

Теоретической основой кодирования чисел является подробным образом развитая в математике теория систем счисления. Система счисления — это способ записи чисел с помощью фиксированного числа знаков. Последние имеют общепринятое название — цифры.

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

В частности, используемая в быту система представления чисел позиционная (сравните значение цифры 2 в записи чисел 132 и 123! ). Что же касается непозиционных систем, то сюда относятся хорошо известный римский способ записи чисел, а также унарная система, с которой вы, вероятно, встречались в первом классе (вспомните счетные палочки! ).

В основе большинства систем счисления лежит принцип разложения по степеням некоторого целого числа2, которое называется основанием системы счисления. Для используемой в быту системы основанием служит число 10 и его степени (сотни, тысячи и т.д.); математики называют ее десятичной, или системой счисления с основанием 10. Попутно заметим, что для построенных рассматриваемым традиционным способом систем счисления основание равняется количеству различных цифр, требуемых для изображения произвольных чисел.

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

Для производства электронной вычислительной техники значительное удобство представляет двоичная система. Для инженеров существенно проще создать электронные элементы с двумя устойчивыми состояниями, соответствующими базовым цифрам системы 0 и 1. Кроме того, все арифметические и логические (булевские) операции наиболее просто реализовываются именно на двоичной основе, а их теория разработана в мельчайших деталях. Заметим, что на преимущества двоичной системы при разработке ЭВМ Джон фон Нейман указывал в своей классической работе еще в 1946 году.

Кроме перечисленных достоинств, двоичная система имеет, конечно, и недостатки, среди которых в первую очередь необходимо назвать необходимость перевода данных из “человеческой” (десятичной) системы счисления в “машинную” (двоичную) и обратно, а также громоздкость записи двоичных чисел. Рассмотрим названные проблемы подробнее.

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

Частным случаем указанного выше способа является перевод из десятичной системы счисления в двоичную, который нужен, чтобы узнать представление в компьютере произвольного десятичного числа. Опуская подробности, напомним, как выглядит процесс перевода числа 2010 в двоичный код:

Остается “собрать” итоговое двоичное число из остатков от деления, не забывая при этом, что старшие разряды получаются всегда позднее, чем младшие. В итоге получим: (20)10 = (10100)2.

Что касается обратного перевода из двоичной системы в десятичную, то универсальный алгоритм деления на основание системы здесь также возможен, но, как уже говорилось, его непосредственная арифметическая реализация неудобна. Поэтому на практике используется иной алгоритм, базирующийся на другом универсальном свойстве, о котором уже упоминалось в связи с определением основания системы счисления. Речь идет о том, что запись произвольного числа в любой системе счисления суть его разложение по степеням основания. Для интересующего нас сейчас случая двоичной системы вычисления будут выглядеть, например, так:

(10100)2 = 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 0 x 20 = 16 + 4 = (20)10.

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

Обратимся теперь к проблеме громоздкости двоичного кода. Если посмотреть на двоичное число, представляющее собой представление некоторого десятичного с весьма умеренным числом цифр (например, трех- или четырехзначного числа), то обнаружится, что выглядит это чрезмерно длинно. Более того, длинная “однообразная” цепочка из нулей и единиц очень плохо воспринимается глазами. Чтобы облегчить ситуацию, для более компактной записи используется восьмеричная или шестнадцатеричная система счисления. Особенностью данных оснований является тот факт, что и 8, и 16 есть степени двойки, а значит, перевод между ними и двоичной системой максимально прост. Учитывая, что 8 = 23, а 16 = 24, получаем, что каждая восьмеричная цифра объединяет ровно 3 двоичных разряда, а шестнадцатеричная — 4.

Отсюда немедленно следует алгоритм перевода из двоичной системы в восьмеричную (шестнадцатеричную):

- сгруппировать двоичные разряды справа налево по три (четыре); если в старшей (т.е. самой левой) группе битов не хватает, их можно дополнить слева незначащими нулями;

- заменить каждую из полученных групп соответствующей ей восьмеричной (шестнадцатеричной) цифрой.

Например:

110102 = 0001 1010 = 1A16.

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

Для облегчения процессов перевода удобно составить таблицу соответствия между восьмеричными или шестнадцатеричными цифрами и их двоичными кодами.

Остается обсудить вопросы, связанные с двоичной арифметикой. Отметим, что арифметические действия в системах счисления с любыми основаниями производятся по одинаковым правилам. Единственное отличие состоит в том значении, при превышении которого возникает перенос в следующий разряд. В общепринятой десятичной системе “критическое” значение равно 10 (вспомните: “8 + 7 = 15, 5 пишем, 1 в уме”).
В двоичной системе, где нет никаких цифр, кроме 0 и 1, перенос наступает, когда в разряде получается результат, равный 2 (или больше). Нетрудно сообразить, что минимальное значение, при котором возникает перенос, равно количеству цифр и, следовательно, основанию системы счисления.

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

Сложение двух чисел в системе счисления с основанием N осуществляется поразрядно от младших разрядов к старшим (“справа налево”, если смотреть на запись числа). Когда сумма данного разряда S не превышает значения N, результат сложения является окончательным. Если же S N, то происходит перенос в старший (“более левый”) разряд, причем каждая единица переноса уменьшает значение S на величину N.

Можно сформулировать аналогичные правила и для остальных арифметических операций. После этого достаточно положить N = 2, и мы получим правила арифметики для двоичной системы.

или в десятичной системе 6 + 10 = 16

Для выполнения арифметических операций (сложение, вычитание, умножение, деление) в системе счисления с основанием P необходимо иметь соответствующие таблицы сложения и умножения. Для P = 2 таблицы представлены ниже.

 


Поделиться:



Последнее изменение этой страницы: 2017-03-14; Просмотров: 621; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.014 с.)
Главная | Случайная страница | Обратная связь