Файл: Разработка модуля для выполнения операций с натуральными числами в 16-ричной системе счисления ( Шестнадцатеричные числа в программировании).pdf
Добавлен: 01.04.2023
Просмотров: 33
Скачиваний: 2
Введение
Данная работа посвящена исследованиям в области информатики, и касается программной реализации операций с натуральными числами в шестнадцатеричной системе счисления. Актуальность темы заключается в том, что в наше время шестнадцатеричная система счисления широко используется в низкоуровневом программировании, что подразумевает возможность проводить всевозможные операции и преобразования над шестнадцатеричными числами.
Целью курсовой работы является изучение возможных программных реализаций модуля для выполнения операций с шестнадцатеричными числами, а также самостоятельная разработка такого модуля.
Для осуществления поставленной цели служат следующие задачи:
1. Изучение технической литературы по теме исследования;
2. Формулировка основных понятий и принципов, касающихся тематики курсовой работы;
3. Разработать структуру подпрограммы для проведения операций над числами в шестнадцатеричной системе счисления;
4. Реализовать модуль, выполняющий операции и преобразования над шестнадцатеричными числами.
Объект исследования – принципы разработки вычислительных модулей.
Предмет исследования – программная реализация модуля для операций и преобразований над шестнадцатеричными числами.
Методологической основой для исследования и разработки послужили труды отечественных и зарубежных математиков и программистов. В качестве теоретической базы были использованы публикации, статьи и выдержки из учебных пособий, посвящённые исследуемой теме. Практической базой исследования послужили платформа “Visual Studio 2017” и язык программирования “C#” версии 7.0.
Глава 1. Шестнадцатеричные числа в программировании
§1.1 Системы счисления
Современный человек в повседневной жизни постоянно сталкивается с числами: мы запоминаем номера автобусов и телефонов, в магазине подсчитываем стоимость покупок, ведём свой семейный бюджет в рублях и копейках и т.д. Числа, цифры с нами везде. А что знал человек о числах несколько тысяч лет назад? Историки доказали, что и пять тысяч лет назад люди могли записывать числа и производить над ними арифметические действия. Конечно, принципы записи были совсем не такими, как сейчас. Но в любом случае число изображалось c помощью одного или нескольких символов. Эти символы, участвующие в записи числа, в математике и информатике принять называть цифрами
Система счисления — это способ записи (представления) чисел.
Различные системы счисления, которые существовали раньше и которые используются в настоящее время, делятся на две группы: позиционные и непозиционные.
Системы счисления, в которых каждой цифре соответствует величина, не зависящая от её места в записи числа, называются непозиционными.
Наиболее совершенными являются позиционные системы счисления, т.е. системы записи чисел, в которых вклад каждой цифры в величину числа зависит от её положения (позиции) в последовательности цифр, изображающей число. Например, наша привычная десятичная система является позиционной: в числе 34 цифра 3 обозначает количество десятков и "вносит" в величину числа 30, а в числе 304 та же цифра 3 обозначает количество сотен и "вносит" в величину числа 300.
Десятичная система счисления - это одна из самых распространенных систем счисления. Именно её мы используем, когда называем цену товара и произносим номер автобуса. В каждом разряде (позиции) может использоваться только одна цифра из диапазона от 0 до 9. Основанием системы является число 10.
Для примера возьмем число 503. Если бы это число было записано в непозиционной системе, то его значение равнялось 5+0+3 = 8. Но у нас - позиционная система и значит каждую цифру числа необходимо умножить на основание системы, в данном случае число “10”, возведенное в степень, равную номеру разряда. Получается, значение равно 5*102 + 0*101 + 3*100 = 500+0+3 = 503. Чтобы избежать путаницы при одновременной работе c несколькими системами счисления основание указывается в качестве нижнего индекса. Таким образом, 503 = 50310.
Помимо десятичной системы, отдельного внимания заслуживают 2-, 8-, 16-ая системы.
Двоичная система счисления, в основном, используется в вычислительной технике. Первую вычислительную машину создал Блез Паскаль, использовавший в ней десятичную систему, которая оказалась неудобной в современных электронных машинах, поскольку требовалось производство устройств, способных работать в 10 состояниях, что увеличивало их цену и итоговые размеры машины. Этих недостатков лишены элементы, работающие в 2-ой системе. Тем не менее, рассматриваемая система была создана за долго до изобретения вычислительных машин и уходит “корнями” в цивилизацию Инков, где использовались кипу — сложные верёвочные сплетения и узелки.
Двоичная позиционная система счисления имеет основание 2 и использует для записи числа 2 символа (цифры): 0 и 1. В каждом разряде допустима только одна цифра — либо 0, либо 1.
Примером может служить число 101. Оно аналогично числу 5 в десятичной системе счисления. Для того, чтобы перевести из 2-й в 10-ю необходимо умножить каждую цифру двоичного числа на основание “2”, возведенное в степень, равную разряду. Таким образом, число 1012 = 1*22 + 0*21 + 1*20= 4+0+1 = 510.
Для машин 2-я система счисления удобнее, но мы ведь часто видим, используем на компьютере числа в 10-й системе.
Чтобы компьютер мог работать с двоичными числами (кодами), необходимо чтобы они где-то хранились. Для хранения каждой отдельной цифры применяется триггер, представляющий собой электронную схему. Он может находится в 2-х состояниях, одно из которых соответствует нулю, другое — единице. Для запоминания отдельного числа используется регистр — группа триггеров, число которых соответствует количеству разрядов в двоичном числе. А совокупность регистров — это оперативная память. Число, содержащееся в регистре — машинное слово. Арифметические и логические операции со словами осуществляет арифметико-логическое устройство (АЛУ). Для упрощения доступа к регистрам их нумеруют. Номер называется адресом регистра. Например, если необходимо сложить 2 числа — достаточно указать номера ячеек (регистров), в которых они находятся, а не сами числа. Адреса записываются в 8- и 16-ричной системах поскольку переход от них к двоичной системе и обратно осуществляется достаточно просто. Для перевода из 2-й в 8-ю число необходимо разбить на группы по 3 разряда справа налево, а для перехода к 16-ой — по 4. Если в крайней левой группе цифр не достает разрядов, то они заполняются слева нулями, которые называются ведущими. В качестве примера возьмем число 1011002. В восьмеричной — это 101 100 = 548, а в шестнадцатеричной — 0010 1100 = 2С16. Но экране мы видим десятичные числа и буквы, так как при нажатии на клавишу в компьютер передаётся определённая последовательность электрических импульсов, причём каждому символу соответствует своя последовательность электрических импульсов (нулей и единиц). Программа драйвер клавиатуры и экрана обращается к кодовой таблице символов (например, Unicode, позволяющая закодировать 65536 символов), определяет какому символу соответствует полученный код и отображает его на экране. Таким образом, тексты и числа хранятся в памяти компьютера в двоичном коде, а программным способом преобразуются в изображения на экране.
§1.2 Применение шестнадцатеричных чисел
Шестнадцатеричная система счисления имеет основание 16 и цифры: 0, 1, 2, 3, 4, 5 6, 7 8, 9, A, В, С, D, E, F. При таком изображении цифр в шестнадцатеричной системе счисления буква А изображает десять, В - одиннадцать, С - двенадцать, D - тринадцать, Е - четырнадцать, F - пятнадцать.
Чтобы изобразить число шестнадцать, поступим аналогично тому как мы поступали в десятичной системе. Увеличим разряд десятков на единицу, а разряд единиц обнулим. Таким образом 1016 = 1610.
Шестнадцатеричная система счисления пришла в употребление с развитием компьютеров. Выводимая информация в двоичном коде была слишком длинной и непонятной, а c переводом чисел в десятеричную систему уходило время, память и не соответствие кратности двойки. Некоторое время пользовались восьмеричной системой, а потом решились на шестнадцатеричную.
Наиболее широкое применение шестнадцатеричной системы счисления – это коды ошибок программных продуктов, например, операционной системы. Числа, заложенные в этих кодах, стандартизированы. Имея специальную таблицу, всегда можно определить, что именно означает та или иная ошибка.
В языках низкого уровня, максимально приближенным к машинным кодам шестнадцатеричная система применяется для написания программ. Многие программисты используют ее и при работе с языками высокого уровня, потому что числа в этой системе при помощи специальной таблицы соответствия легко переводятся в двоичную систему, на которой основана работа всей цифровой техники. Любая информация в компьютере, будь то музыкальный файл или текстовый документ, после трансляции представлена последовательностью исходного двоичного кода, а его удобнее просматривать представленным символами шестнадцатеричной системы.
Также одно из применений шестнадцатеричных символов – описание цветовых схем, то есть три компонента R, G, B описываются соответствующим данной системе способом. Данный подход к записи получил название шестнадцатеричный цвет.
Возможность просмотреть программу в шестнадцатеричном коде позволяет отладить ее, внести изменения, а злоумышленниками данный подход используется для взлома программ.
Для работы с шестнадцатеричными числами удобно обращаться к специальным программным библиотекам или вычислительным модулям. Такие подпрограммы выполняют множество задач, такие как арифметические действия, преобразования, переводы между системами счисления. Несмотря на то, что подобные модули часто входят в базовый пакет программ, во некоторых случаях для программиста имеет смысл самостоятельно разработать вычислительный блок, чтобы иметь возможность настроить его под конкретную ситуацию и сделать более гибким при выполнении стандартных и специфических задач.
Глава 2. Создание вычислительного модуля
§2.1 Разработка структуры программы
Создание алгоритма начнём с того, что обозначим все функции вычислительного модуля необходимые для выполнения всех поставленных ему задач.
От модуля требуется:
- Уметь получать числа в десятичной системе счисления и переводить в шестнадцатеричную систему счисления и обратно.
- Проводить стандартные арифметические операции с шестнадцатеричными числами (сложение, вычитание, умножение, деление).
Для перевода десятичного числа в шестнадцатеричную систему его необходимо последовательно делить на 16 до тех пор, пока не останется остаток, меньший или равный 15. Число в двоичной системе записывается как последовательность последнего результата деления и остатков от деления в обратном порядке.
Например, число 746710 перевести в шестнадцатеричную систему счисления.
746710 = 1D2B16
Для перевода шестнадцатеричного числа в десятичное необходимо его записать в виде многочлена, состоящего из произведений цифр числа и соответствующей степени числа 16, и вычислить по правилам десятичной арифметики:
X2 = An * 16n-1 + An-1*16n-2 + An-2*16n-3 + … + A2161 + A1*160
Например, число FDA116 перевести в десятичную систему счисления.
FDA116 = 15*163 + 13*162 + 10*161 + 1*160 = 6492910
В шестнадцатеричной системе счисления все арифметические действия выполняются также, как и в десятичной. Законы арифметики (коммутативный, ассоциативный, дистрибутивный) справедливы для всех систем счисления. Зная это можно выполнить каждое арифметическое действие между шестнадцатеричными числами аналогично, как в десятичной системе счисления, “столбиком”.
§2.2 Программная реализация
Далее будет представлен код программы, реализующий вычислительный модуль для выполнения операций с натуральными шестнадцатеричными числами.
В связи с тем, что задача курсовой работы подразумевает работу с натуральными числами, то на вычислительный модуль накладывается ряд замечаний: