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

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

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

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

Добавлен: 31.03.2023

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

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

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

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

Теперь рассмотрим шестнадцатеричные числа, у которых основание равно 16, а также имеются цифры обозначенные буквами латинского алфавита:

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

Итак, рассмотри сложение 16-ричных чисел A15 и BC [4].

A15

+

BC

AD1

Поясним порядок сложения:

  1. Складываем разряды единиц: 5 и С. При этом учитываем, что С = 12, тогда получаем 5 + 12 = 17. Полученный результат превышает основание ПСС, равное шестнадцати. Поэтому вычитаем 16 из 17 и получаем 1, записываем полученный результат под правым разрядом, а в левый старший разряд переносим 1 (шестнадцать единиц соответствует 1-му десятку в 16-ричной ПСС).
  2. Далее складываем 1 и B. Прибавляем к данной сумме перенесенную единицу и учитываем, что B = 11, получаем: 1 + 1 + 11 = 13. Данный результат меньше 16, поэтому его можно записать под суммируемыми цифрами, при этом число 13 в 16-ричной системе записывается буквой D.
  3. Цифра A из верхнего слагаемого переносится в результат. В разряд сотен при этом ничего не переносится.

Таким образом, A15 + BC = AD1.

На рисунке 1.2 представлена графическая иллюстрация предложенного алгоритма для сложения двух других 16-ричных чисел 1С5216 и 89116.

Рис. 1.2

Рассмотрим операцию вычитания 16-ричных чисел. При этом опять рассмотрим пример вычитания для десятичной ПСС. Вычислим следующую разность:

223

95

128

Процесс вычитания реализуется поразрядно, при этом переносы реализуются слева направо. В рассмотренном примере необходимо от цифры три вычесть цифру пять. Так как это сделать не получится, необходимо занять один десяток из левого разряда. Теперь цифру пять необходимо вычесть из числа тринадцать. В результате получим цифру восемь, которую записываем под разрядом единиц. От десятков в уменьшаемом числе двести двадцать три мы один десяток заняли в разряд единиц. Теперь здесь только один десяток. Нам нужно из одного вычесть девять. Поэтому опять занимаем единицу из левого разряда, но уже сотен. Далее необходимо из одиннадцати отнять девять и получим два, которое запишем под разрядом десятков. При этом одну сотню мы заняли для вычитания десятков, поэтому в разряде сотен остается единица. Полученный результат: 223-95 = 128.


Далее перейдем к вычитанию 16-ричных чисел. Алгоритм вычитания аналогичен. При этом необходимо помнить, что при сравнении полученного результата вычитания необходимо использовать число 16, а не 10.

Рассмотрим пример BC4-AF [4].

BC4

AF

B15

От четырех нельзя отнять число F, поэтому из левого разряда мы будем занимать число шестнадцать. В результате из 20 вычитаем число F и получаем цифру 5, которую записываем под разрядом единиц. При этом число C уменьшилось на единицу и получилось число B. Далее из B необходимо отнять A. При этом получится единица, которую записываем в разряд десятков. Так как от сотен ничего не занималось, а в вычитаемом примере только 2 цифры, то переносим B из уменьшаемого в конечный результат: BC4-AF = B15.

На рисунке 1.3 представлены результаты вычитания двух чисел С5B16 и A7E16.

Рис.1.3.

Умножение и деление проводится также, как и в десятичной системе. На рисунке 1.4 представлены результаты перемножения двух чисел 20A416 и B1516.

Рис.1.4.

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

Таблица 1.2

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

1

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

2

2

4

6

8

A

C

E

10

12

14

16

18

1A

1C

1E

3

3

6

9

C

F

12

15

18

1B

1E

21

24

27

2A

2D

4

4

8

C

10

14

18

1C

20

24

28

2C

30

34

38

3C

5

5

A

F

14

19

1E

23

28

2D

32

37

3C

41

46

4B

6

6

C

12

18

1E

24

2A

30

36

3C

42

48

4E

54

5A

7

7

E

15

1C

23

2A

31

38

3F

46

4D

54

5B

62

69

8

8

10

18

20

28

30

38

40

48

50

58

60

68

70

78

9

9

12

1B

24

2D

36

3F

48

51

5A

63

6C

75

7E

87

A

A

14

1E

28

32

3C

46

50

5A

64

6E

78

82

8C

96

B

B

16

21

2C

37

42

4D

58

63

6E

79

84

8F

9A

A5

C

C

18

24

30

3C

48

54

60

6C

78

84

90

9C

A8

B4

D

D

1A

27

34

41

4E

5B

68

75

82

8F

9C

A9

B6

C3

E

E

1C

2A

38

46

54

62

70

7E

8C

9A

A8

B6

C4

D2

F

F

1E

2D

3C

4B

5A

69

78

87

96

A5

B4

C3

D2

E1


Операция умножения довольно просто выполняется при использовании этой таблицы. Например, при умножении чисел 4А x C сначала выполним операцию умножения для 4 х С = 30 и затем А х С = 78. Для этого нужно найти числа, находящиеся на пересечении строк и столбцов чисел 4 и С, а затем А и С. Затем нужно сложить 300 и 78, в результате получим 378.

На рисунке 1.5 представлены результаты деления двух чисел 6F7816 и 816 в столбик.

Рис. 1.5.

При этом также можем воспользоваться данными из таблицы 1.2. Для операции деления нужно найти число в строке, в которой слева находится делитель или близкое к нему число. Например, при делении 378 на С, найдем в строке, где слева находится С, максимальное число, которое не превышает 37 – это будет 30. Запишем верхнее число, которое находится в этом столбце, это будет 4. 37 – 30 = 7. Далее найдем в этой же строке число 78 и запишем верхнее значение столбца, где оно находится. Получим А, значит, наше число 4A. [4, 2, 8, 9, 7]

Разработка модуля для выполнения операций с натуральными числами в 16-ричной системе счисления в языке C#

Разрабатываемый модуль представляет собой калькулятор, позволяющий реализовать операции сложения и вычитания двух натуральных 16-ричных чисел, выполненный в среде Visual Studio 2017 на языке программирования C#.

    1. Особенности языка программирования C#

Язык программирования C# предназначен для разработки программ на платформе .NET корпорации Microsoft. В этом языке присутствуют как надежные проверенные средства программирования, так и последние нововведения с возможностью эффективного и практичного создания программ, предназначенных для мощных вычислительных сред современных организаций [14].

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

В C# присутствует много новых средств, и одним из самых важных является встроенная поддержка программных компонентов. При этом язык C# по сути является компонентно-ориентированным языком программирования, так как в него встроена поддержка написания программных компонентов. К примеру, в C# присутствуют средства прямой поддержки программных компонентов, их свойств, методов и события. Другой важной особенностью языка C#, является возможность работы в безопасной среде многоязыкового программирования.


C# унаследовал от С многие ключевые слова и операторы. При этом C# построен на усовершенствованной объектной модели, использованной в C++. У C# имеется особая взаимосвязь со средой выполнения .NET Framework, что объясняется следующим:

  • он предназначался для создания кода, который должен выполняться в среде .NET Framework;
  • используемые в C# библиотеки определены в среде .NET Framework.

.NET Framework – среда для поддержки разработки и выполнения сильно распределенных компонентных приложений, которая обеспечивает совместное использование разных языков программирования, а также безопасность, переносимость программ и общую модель программирования для платформы Windows. При этом существуют и недостатки данного подхода, заключающиеся в необходимости использования дополнительной среды NET Framework, а также в увеличении требуемой памяти и снижении скорости выполнения разрабатываемых программы. Вместе с тем те достоинства, которые предоставляет .NET Framework значительно шире: однообразные средства API для разработки программ на разных языках; простота стыковки разноязыковых модулей; обширные библиотеки готовых классов; отсутствие необходимости использования программ-инсталляторов при установке программ под .NET и т.д. [14, 6, 1, 5].

2.2 Описание интерфейса модуля

Интерфейс представлен на рисунке 2.1 и включает: поле ввода, набор кнопок для ввода натуральных чисел в шестнадцатеричной системе счисления (от 0 до F), кнопки арифметических операций («+», «–»,«=») и очистки поля ввода.

Рис. 2.1.

Порядок выполнения вычислений

Для выполнения вычислений необходимо ввести первое число в поле ввода, к примеру, число 2 (рис. 2.2).

Рис. 2.2.

Далее нажимаем необходимую операцию, например сложения (рис.2.3).

Рис. 2.3.

Далее выбираем операцию равно (рис. 2.4) и получаем результат вычислений (рис. 2.5).

Рис. 2.4.

Рис. 2.5.

Исследование работы модуля

Проверим работу модуля при выполнении операций сложения на числах, приведенных ранее в разделе 1. На рисунке 2.6 и 2.7 представлен результат сложения двух натуральных чисел A15 и BC. Получен результат AD1.


Рис. 2.6.

Рис. 2.7.

На рисунке 2.8 и 2.9 представлен результат сложения двух натуральных чисел 1С5216 и 89116 . Получен результат 24E3.

Рис. 2.8

Рис. 2.9.

Далее рассмотрим операции вычитания.

На рисунке 2.10 и 2.11 представлен результат вычитания двух натуральных чисел BC416 и AF16 . Получен результат B1516.

Рис. 2.10

Рис. 2.11.

На рисунке 2.12 и 2.13 представлен результат вычитания двух натуральных чисел С5B16 и A7E16 . Получен результат 1DD16.

Рис. 2.12.

Рис. 2.13.

Проверим правильность работы модуля в дополнительных ситуациях.

Сложим числа FF16 и B16 (рис.2.14, 2.15, 2.16). Получим 10A16, что легко проверяется, так как сумма F и B дает 2610=1*16+10=1*16+A, запоминаем 1. А сумма F и 1 дает 1610 или 1016. Итого получается 10A16.

Рис. 2.14.

Рис. 2.15.

Рис. 2.16.

Вычтем из числа FF16 число F16 (рис. 2.17, 2.18, 2.19). Получаем верное число F016.

Рис. 2.17.

Рис. 2.18.

Рис. 2.19.

Таким образом, разработанный модуль удовлетворяет всем необходимым требованиям при выполнении операций сложения и вычитания. [12,13, 14, 15]

Заключение

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