Представление целых чисел со знаком


Для представления целых чисел со знаком используется 4 формата:

Формат Тип данных в С# Диапазон Описание и инициализация в С#
байт byte sbyte 0 ¸ +255 –128 ¸ +127 byte b = 142; sbyte n = -25;
слово char ushort short 0 ¸ +65535 0 ¸ +65535 –32768 ¸ +32767 char c = 97; ushort n = 4663; short x = -36;
двойное слово uint int 0 ¸ +232 – 1 –231 ¸ +231 – 1 uint f = 42345; int g = -42345;
расширенное двойное слово ulong long 0 ¸ +264 – 1 –263 ¸ +263 – 1 ulong f = 42345; long g = -42345;

 

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

Дополнительный код отрицательного числа формируется так:

 

1) модуль отрицательного числа определяется в двоичном виде;

2) слева дописываются нули до нужного формата;

3) полученное число инвертируется, в результате чего образуется обратный код;

4) к обратному коду арифметически прибавляется единица;

5) результат разбивается на тетрады и записывается в шестнадцатеричном виде в соответствии с таблицей символов шестнадцатеричного алфавита:

 

0 0000 4 0100 8 1000 C 1100

1 0001 5 0101 9 1001 D 1101

2 0010 6 0110 A 1010 E 1110

3 0011 7 0111 B 1011 F 1111

Пример: число – 8 в формате байта, слова, двойного слова:

 

Формат байта Формат слова
1) модуль в двоичной форме
2) дописываем нули 0000 0000 0000 1000
3) инвертируем и прибавляем 1 1111 1111 1111 1000
4) в 16-ричномм виде F8 FF F8
Формат двойного слова  
1) модуль в двоичной форме  
2) дописываем нули 0000 0000 0000 0000 0000 0000 0000 1000  
3) инвертируем и прибавляем 1 1111 1111 1111 1111 1111 1111 1111 1000  
4) в 16-ричном виде FF FF FF F8  
       

 

Ниже представлен код метода Main(), который выполняет инициализацию числовых переменных заданными константами и вывод их значений на дисплей в десятичном и шестнадцатеричном виде.

 

byte byte1 = 227;

sbyte byte2 = -8;

Console.WriteLine("Число I1 (byte): {0:D}d", byte1);

Console.WriteLine("Число I1 (byte): {0:X}h\n", byte1);

Console.WriteLine("Число I2 (byte): {0:D}d", byte2);

Console.WriteLine("Число I2 (byte): {0:X}h\n", byte2);

 

ushort word1 = 451;

short word2 = -864;

Console.WriteLine("Число I3 (word): {0:D}d", word1);

Console.WriteLine("Число I3 (word): {0:X}h\n", word1);

Console.WriteLine("Число I4 (word): {0:D}d", word2);

Console.WriteLine("Число I4 (word): {0:X}h\n", word2);

 

Console.ReadKey();

 

Здесь для вывода используется метод WriteLine() и два спецификатора: D и X, обеспечивающие вывод целых чисел формата байта (byte, sbyte) и формата слова (ushort, short) соответственно в десятеричной и шестнадцатеричной системе счисления. Спецификатор \n производит переход на новую строку и возврат каретки.

Результат выполнения данной программы:

Число I1 (byte): 227d

Число I1 (byte): E3h

 

Число I2 (byte): -8d

Число I2 (byte): F8h

 

Число I3 (word): 451d

Число I3 (word): 1C3h

 

Число I4 (word): -864d

Число I4 (word): FCA0h

 

Задание

1. Согласно варианту выбрать из таблицы 1 целые числа I1, I2, I3 и I4.

2. Составить программу на языке С#, которая выполняет действия, описанные в пп. а – ж. Результаты каждого действия выводить на консоль в десятеричном и шестнадцатеричном формате.

а. Объявить переменные byte1 типа byte и byte2 типа sbyte и инициализировать их значениями I1, и I2 соответственно.

б. Объявить переменные word1 и word2 таких типов, чтобы было возможно осуществить неявное преобразование типов из формата байта в формат слова, и выполнить операции присваивания word1 = byte1 и word2 = byte2.

в. Инициализировать переменные word1 и word2 значениями I3, и I4 соответственно.

г. Объявить переменные dword1 и dword2 таких типов, чтобы было возможно осуществить неявное преобразование типов из формата слова в формат двойного слова, и выполнить операции присваивания dword1 = word1 и dword2 = word2.

д. Выполнить операции присваивания byte1 = word1 и byte2 = dword1; объяснить полученные результаты.

е. Объявить переменную типа char и инициализировать ее значением С из таблицы 1.

ж. С использованием неявного преобразования типов получить код символа С; использовать ранее объявленную переменную формата слова.

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

4. Составить блок-схему алгоритма, реализуемого программой.

5. Сделать выводы по лабораторной работе.

 

Таблица 1 Варианты заданных чисел

№ варианта Заданные числа в десятеричной системе счисления
I1 I2 I3 I4 С
-56 -172 'Й'
-69 -130 'Ц'
-15 -395 'У'
-58 -207 'К'
-15 -1134 'Е'
-98 -167 'Н'
-50 -705 'Г'
-20 -259 'Ш'
-95 -1778 'Щ'
-116 -200 'З'
-13 -610 'Х'
-22 -557 'Ф'
-94 -1909 'Ы'
-126 -2504 'В'
-45 -908 'А'
-3 -1323 'П'
-31 -1530 'Р'
-107 -440 'О'
-84 -745 'Л'
-108 -502 'Д'
-113 -1917 'Ж'
-15 -474 'Э'
-65 -205 'Я'
-45 -132 'Ч'
-81 -814 'С'
-76 -665 'М'
-67 -908 'И'
-11 -457 'Т'
-37 -124 'Б'
-88 -1055 'Ю'

 

Требования к содержанию отчета

 

­ титульный лист установленного образца;

­ тема, цель, задание, с в т.ч. его индивидуальная часть (п.1 задания);

­ текст программы, реализующей заданные действия а–ж согласно п.2 задания;

­ краткие пояснения по выполнению каждого действия а–ж;

­ результаты выполнения программы и их анализ согласно п.3 задания;

­ блок-схема алгоритма программы (п.4 задания);

­ вывод по работе (п.5 задания).

Список контрольных заданий на защите отчета

 

1. На примере своей программы предложить какую-либо операцию неявного преобразования и пояснить ее смысл.

2. На примере своей программы предложить какую-либо операцию, требующую явного преобразования и пояснить ее смысл.

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

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

5. Предложить несколько способов реализации преобразования типов для заданной операции.

 

Контрольные вопросы

 

  1. Какие языки программирования поддерживает Microsoft Visual Studio?
  2. Как создать проект в MS Visual Studio?
  3. Что такое консольное приложение?
  4. Что такое пространство имен?
  5. Каково назначение метода Main()?
  6. Перечислить стандартные классы, задействованные в программе, а также их методы.
  7. Пояснить смысл предложения C#: System.Console.WriteLine(…)
  8. Как при помощи среды откомпилировать и выполнить проект?
  9. В чем отличие явного и неявного преобразования типов?

 



Дата добавления: 2021-12-14; просмотров: 355;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.014 сек.