Файл: Разработка модуля для выполнения операций с натуральными числами в 16-ричной системе счисления (Теоретически основы выполнения вычислительных операций в 16-ричной системе счисления).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 157

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

Современный человек в повседневной жизни постоянно сталкивается с числами. Числа, цифры... они с нами везде. Историки показали, что и пять тысяч лет назад люди могли записывать числа и производить над ними арифметические действия. Конечно, принципы записи были совсем не такими, как сейчас. Но в любом случае число изображалось с помощью одного или нескольких символов. Эти символы, участвующие в записи числа, в математике и информатике принять называть цифрами.

Первоначально понятие отвлечённого числа отсутствовало, число было "привязано" к тем конкретным предметам, которые пересчитывали. Отвлечённое понятие натурального числа появляется вместе с развитием письменности. Дробные же числа изобрели тогда, когда возникла необходимость производить измерения. Измерение, как известно, это сравнение с другой величиной того же рода, выбираемой в качестве эталона. Эталон называется ещё единицей измерения. Понятно, что единица измерения не всегда укладывалась целое число раз в измеряемой величине. Отсюда и возникла практическая потребность ввести более "мелкие" числа, чем натуральные. Дальнейшее развитие понятия числа было обусловлено уже развитием математики. Понятие числа – фундаментальное понятие, как математики, так и информатики. В дальнейшем при изложении материала под числом мы будем понимать его величину, а не его символьную запись. Сегодня, в самом конце XX века, для записи чисел человечество использует в основном десятичную систему счисления.

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

В настоящей работе рассмотрим одну из разновидностей позиционной системы счисления – 16-ричную систему счисления, а также реализуем программное приложение на языке C#, позволяющее выполнять простейшие арифметические операции.


  1. Теоретически основы выполнения вычислительных операций в 16-ричной системе счисления

Разновидности позиционных систем счисления

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

Под позиционной системой счисления обычно понимается b-ричная система счисления, которая определяется целым числом b > 1, называемым основанием системы счисления. Целое число без знака x в b-ричной системе счисления представляется в виде конечной линейной комбинации степеней числа b: , где ak – это целые числа, называемые цифрами, удовлетворяющие неравенству

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

Если не возникает разночтений (например, когда все цифры представляются в виде уникальных письменных знаков), число x записывают в виде последовательности его b-ричных цифр, перечисляемых по убыванию старшинства разрядов слева направо: x=an-2an-1….a0.

Например, число тридцать три представляется в десятичной системе счисления в виде: 3310=3*101+3*100.

Наиболее часто употребляемыми в настоящее время позиционными системами являются:

2 – двоичная (в дискретной математике, информатике, программировании);

3 – троичная;


8 – восьмеричная;

10 – десятичная (используется повсеместно);

12 – двенадцатеричная (счёт дюжинами);

16 – шестнадцатеричная (используется в программировании, информатике);

20 – двадцатеричная;

60 – шестидесятеричная (единицы измерения времени, измерение углов и, в частности, координат, долготы и широты).

В позиционных системах чем больше основание системы счисления, тем меньшее количество разрядов (то есть записываемых цифр) требуется при записи числа.

1.2 Особенности 16-ричной системы счисления

Шестнадцатеричная система счисления – позиционная система счисления по целочисленному основанию 16. В качестве цифр этой системы счисления обычно используются цифры от 0 до 9 и латинские буквы от A до F. Буквы A, B, C, D, E, F имеют значения 1010, 1110, 1210, 1310, 1410, 1510 соответственно.

Широко используется в низкоуровневом программировании и компьютерной документации, поскольку в современных компьютерах минимальной адресуемой единицей памяти является 8-битный байт, значения которого удобно записывать двумя шестнадцатеричными цифрами. Такое использование началось с системы IBM/360, где вся документация использовала шестнадцатеричную систему, в то время как в документации других компьютерных систем того времени (даже с 8-битными символами, как, например, PDP-11 или БЭСМ-6) использовали восьмеричную систему.

В стандарте Юникода номер символа принято записывать в шестнадцатеричном виде, используя не менее 4 цифр (при необходимости – с ведущими нулями).

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

Например, требуется перевести шестнадцатеричное число «3A5» в десятичное. В этом числе 3 цифры. В соответствии с вышеуказанным правилом представим его в виде суммы степеней с основанием 16:

3A516 = 3·162+10·161+5·160= 3·256+10·16+5·1 = 768+160+5 = 93310.

При переводе чисел, следует помнить, что в шестнадцатеричной системе счисления: A=10; B=11; C=12; D=13; E=14; F=15.

Шестнадцатеричное представление чисел получило популярность вследствие того, что двоичные числа очень трудно читать, особенно если они очень большие. При этом перевод двоичного числа в десятичное достаточно труден, а в шестнадцатеричное – нет, так как в последнем случае существует ускоренные методы перевода многозначного двоичного числа в шестнадцатеричную систему на основе разбиения его на тетрады, справа налево и замены каждой тетрады соответствующей шестнадцатеричной цифрой. Для перевода числа из шестнадцатеричной системы в двоичную нужно заменить каждую его цифру на соответствующую тетраду из нижеприведённой таблицы перевода (таблица 1.1). К примеру, для числа 0101101000112 получим:


0101101000112 = 0101 1010 0011 = 5A316.

Чтобы перевести десятичное число в шестнадцатеричное, необходимо выполнить следующие действия:

1.Проверяем, не меньше ли 16 наше число: если да, то результат достигнут. Действительно, такое десятичное число необходимо лишь заменить соответствующей ему шестнадцатеричной цифрой из таблицы 1. Если же наше десятичное число больше 16, переходим к шагу 2.

2.Делим наше число «нацело» на 16 и запоминаем целочисленный остаток от этого деления. Результат этого деления снова сравниваем с 16. Если результат деления меньше 16, то его стоит тоже запомнить как последний из остатков.

3.Шаг 2 повторяем до тех пор, пока результат деления не будет меньше 16. Целочисленные остатки на всех этапах запоминаем. Они понадобятся в шаге 4.

4.Все остатки записываем в обратном порядке и заменяем в них числа от 10 до 15 шестнадцатеричными цифрами от A до F.

Таблица 1.1

К примеру, переведем десятичное число 89 в шестнадцатеричное. Оно больше 16, поэтому разделим его на 16. Частное равно 5 и 9 в остатке. 5 меньше 16, значит, деление прекращается и 5 запомним как последний остаток. То есть у нас есть два остатка: 9 и 5. Теперь их надо записать в обратном порядке, получаем: 89 = 5916. Проверим, действительно ли 0×59 равно 89? Распишем его по привычной уже схеме: 5916= 5×161 + 9×160 = 5×16 + 9 = 89.

Действительно, получилось. Но в выбранном примере число 89 очень быстро закончилось, если так можно сказать. В противном случае деление потребовалось бы продолжить. Покажем это на более сложном примере. Возьмем число 3728: 3728 / 16 = 233 и 0 в остатке. Затем 233 / 16 = 14 и 9 в остатке. Результат этого деления равен 14, он меньше 16. Деление заканчиваем и запоминаем этот результат деления как последний остаток. Нам осталось лишь записать эти остатки в обратном порядке и заменить десятичное число 14 на шестнадцатеричную цифру E. Итак, искомое число E90.

На рисунке 1.1. представлен пример перевода десятичного числа 500 в шестнадцатеричную систему счисления на основе деления в столбик.

Рис.1.1.

Результат перевода 1F416.

1.3 Арифметические операции с 16-ричными числами

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


Для начала рассмотрим, как складывать числа в столбик в привычной нам десятичной системе счисления и применим эти знания на шестнадцатеричные числа.

Предположим, нам необходимо сложить числа 234 и 49. Для этого мы запишем эти числа одно под другим так, чтобы разряды в них совпадали – единицы под единицами, десятки под десятками и так далее. И складывать будем цифры из одинаковых разрядов, начиная с единиц и идя влево.

234

+

49

283

Помня о том, что мы пока складываем десятичные числа (10 является основанием системы счисления), складываем разряды по очереди справа налево. 4 + 9 = 13. Наш результат – 13, он больше 10 – нашего основания. В случае, когда результат больше или равен основанию, это самое основание нужно вычесть из результата. В нашем примере от 13 необходимо отнять 10, а новый результат записать под цифрами 4 и 9, отнятую же здесь десятку, перенести в левый разряд как единицу старшего разряда (десять единиц равно одному десятку). В разряде с десятков мы складываем 3 + 4 и добавляем к ним перенесенный 1 десяток. Результат – 8. Он меньше нашего основания, значит под десятками просто записываем 8. Далее складываем сотни. Но двойку не с чем складывать, значит просто переносим ее в результат. Итак: 234 + 49 = 283.

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

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

A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Переходим собственно, к примеру, на сложение. Давайте сложим 0xA15 и 0xBC.

A15

+

BC

AD1

Сначала складываем единицы – 5 + С. Вспоминаем, что С = 12, получаем 5 + 12 = 17. Результат больше основания системы счисления, который равен 16. Значит, вычитаем 16 из 17 – равно 1, записываем этот новый результат под правым разрядом, а в левый старший разряд переносим единичку (16 единиц равно одному десятку в шестнадцатеричной системе). Там же складываем 1 + B. Добавляем к этой сумме 1 перенесенный разряд и вспоминаем, что B = 11, получаем: 1 + 1 + 11 = 13. Во-первых: этот результат меньше 16, значит его можно просто записать под складываемыми цифрами, а во-вторых: Число 13 в шестнадцатеричной арифметике записывается буквой D. В разряд сотен при этом ничего не переносится, а цифра A из верхнего слагаемого просто переносится в результат. Несложно заметить, что A15 + BC = AD1. На рисунке 1.2 представлены результаты сложения двух чисел 1С5216 и 89116.