Файл: Разработка модуля для выполнения операций с натуральными числами в 16-ричной системе счисления ( Шестнадцатеричные числа в программировании).pdf
Добавлен: 01.04.2023
Просмотров: 32
Скачиваний: 2
- При вычитании из меньшего числа большее получим отрицательное шестнадцатеричное число.
- При делении шестнадцатеричных чисел может не получиться целочисленного деления. В таком случае будут указаны целая часть и остаток от деления.
Программа выполнена с использованием языка “C#” версии 7.0. и платформы “Visual Studio 2017”.
using System;
namespace Сalculative_Module
{
class Program
{
static void Main(string[] args)
{
Module.Demonstration();
Console.ReadKey();
}
}
public static class Module
{
private static string ConvertNumber10to16(int X) // Конвертация десятичных чисел в односимвольные шестнадцатеричные числа
{
if (X == 10)
return "A";
else if (X == 11)
return "B";
else if (X == 12)
return "C";
else if (X == 13)
return "D";
else if (X == 14)
return "E";
else if (X == 15)
return "F";
else
return X.ToString();
}
public static string ConvertTo10From16(int X10) // Ввод десятичного числа - вывод шестнадцатеричное число
{
string Y16 = "";
do
{
Y16 = ConvertNumber10to16(X10%16) + Y16;
X10 /= 16;
} while (X10 > 15);
if (X10>0)
Y16 = ConvertNumber10to16(X10) + Y16;
return Y16;
}
private static int ConvertChar16to10(char X) // Конвертация шестнадцатеричных односимвольных чисел в десятичные числа
{
if ((X == 'A') || (X == 'a'))
return 10;
else if ((X == 'B') || (X == 'b'))
return 11;
else if ((X == 'C') || (X == 'c'))
return 12;
else if ((X == 'D') || (X == 'd'))
return 13;
else if ((X == 'E') || (X == 'e'))
return 14;
else if ((X == 'F') || (X == 'f'))
return 15;
else
return X-'0';
}
public static int ConvertTo16From10(string X16) // Ввод шестнадцатеричого числа - вывод десятичное число
{
char[] Num = X16.ToCharArray();
int Rezult = 0;
for (int i = Num.Length - 1, j = 0; i >= 0; i--, j++)
{
Rezult += ConvertChar16to10(Num[j]) * (int)Math.Pow(16, i);
}
return Rezult;
}
public static string Sum16(string A, string B) // Сложение
{
return ConvertTo10From16(ConvertTo16From10(A) + ConvertTo16From10(B));
}
public static string Raz16(string A, string B) // Вычитание
{
int a = ConvertTo16From10(A);
int b = ConvertTo16From10(B);
if (a >= b)
return ConvertTo10From16(ConvertTo16From10(A) - ConvertTo16From10(B));
else
return "-" + ConvertTo10From16(ConvertTo16From10(B) - ConvertTo16From10(A));
}
public static string Mult16(string A, string B) // Умножение
{
return ConvertTo10From16(ConvertTo16From10(A) * ConvertTo16From10(B));
}
public static string Del16(string A, string B) // Деление
{
return ConvertTo10From16(ConvertTo16From10(A) / ConvertTo16From10(B));
}
public static void Demonstration() // Демонстрация работы модуля
{
int x;
string A, B;
Console.WriteLine("Введите натуральное делятичное число ");
x = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Это число в шестнадцатеричной системе счисления: " + ConvertTo10From16(x));
Console.WriteLine("Введите шестнадцатеричное число число ");
A = Console.ReadLine();
Console.WriteLine("Это число в десятичной системе счисления: " + ConvertTo16From10(A));
Console.WriteLine("Введите подряд два шестнадцатеричных числа");
A = Console.ReadLine();
B = Console.ReadLine();