Конспект 4-ой лекции и задание

На лекции строился код, в котором рассматривались операции над переменными типа byte – простейшими целыми числами.

Необходимо продолжить этот код, подключив туда переменные других целых типов, а также вещественных типов float и double.

Исходный код внутри метода Main

string what;

Console. WriteLine("What?");

what = Console. ReadLine();

switch (what)

{

case "Байты":

// Описание переменной типа byte

byte bMax; // Значение b не определено

Console. WriteLine("Максимальное {0} и минимальное {1} значения байта",

bMax = byte. MaxValue, Byte. MinValue);

Console. WriteLine("Бинарная {0} и шестнадцатеричная {1} запись Byte. MaxValue",

Convert. ToString(bMax, 2), Convert. ToString(bMax, 16));

// Операции над байтами

Console. WriteLine("Операции над байтами");

Console. Write("b1=");

byte b1 = Byte. Parse(Console. ReadLine());

Console. Write("b2=");

byte b2 = Convert. ToByte(Console. ReadLine());

// byte sum = b1 + b2; // Ошибочная запись

// Сумма байтов имеет тип int

// Требуется явное преобразование типов

byte sum = (byte)(b1 + b2);

Console. WriteLine("Сумма: {0} + {1} = {2}", b1, b2, sum);

//byte mult = b1 * b2; // Произведение байтов также имеет тип int

byte mult = (Byte)(b1 * b2);

Console. WriteLine("Произведение: {0}*{1} = {2}", b1, b2, mult);

//Byte div = b1 / b2; // Отношение байтов - число типа int

try

{

byte div = (byte)(b1 / b2);

НЕ нашли? Не то? Что вы ищете?

Console. WriteLine("Частное: {0}/{1} = {2}", b1, b2, div);

}

catch (DivideByZeroException e)

{

Console. WriteLine(e. Message);

}

// Побитовые операции

Console. Write("Побитовые операции\nПобитовая операция отрицания байта\nb1=");

b1 = byte. Parse(Console. ReadLine());

//byte notb1 = ~b1; // ~b1 имеет тип int

byte notb1 = (byte)~b1;

Console. WriteLine("Побитовое отрицание байта ~{0}, " +

"или в бинарном виде ~{1} имеет значение {2}, или в бинарном виде {3}",

b1, Convert. ToString(b1, 2).PadLeft(8, '0'),

notb1, Convert. ToString(notb1, 2).PadLeft(8, '0'));

Console. WriteLine("Бинарные побитовые операции");

// Побитовая операция "или" (логическое сложение)

Console. Write("Побитовая операция \"или\" (логическое сложение)\nb1=");

b1 = byte. Parse(Console. ReadLine());

Console. Write("b2=");

b2 = Byte. Parse(Console. ReadLine());

byte b1ORb2 = (byte)(b1 | b2);

Console. WriteLine("Побитовая операция \"или\" байтов {0} | {1} = {2};" +

" В бинарном виде: {3} | {4} = {5}", b1, b2, b1ORb2,

Convert. ToString(b1, 2).PadLeft(8, '0'),

Convert. ToString(b2, 2).PadLeft(8, '0'), Convert. ToString(b1ORb2, 2).PadLeft(8, '0'));

// Побитовая операция "и" (логическое умножение)

Console. Write("Побитовая операция \"и\" (логическое умножение)\nb1=");

b1 = byte. Parse(Console. ReadLine());

Console. Write("b2=");

b2 = Byte. Parse(Console. ReadLine());

byte b1ANDb2 = (byte)(b1 & b2);

Console. WriteLine("Побитовая операция \"и\" байтов {0} & {1} = {2};" +

" В бинарном виде: {3} & {4} = {5}", b1, b2, b1ANDb2,

Convert. ToString(b1, 2).PadLeft(8, '0'),

Convert. ToString(b2, 2).PadLeft(8, '0'), Convert. ToString(b1ANDb2, 2).PadLeft(8, '0'));

// Побитовая операция "исключающее или" (симметрическая раность)

Console. Write("Побитовая операция \"исключающее или\" (симметрическая раность)\nb1=");

b1 = byte. Parse(Console. ReadLine());

Console. Write("b2=");

b2 = Byte. Parse(Console. ReadLine());

byte b1XORb2 = (byte)(b1 ^ b2);

Console. WriteLine("Побитовая операция \"исключающее или\" байтов {0} ^ {1} = {2};" +

" В бинарном виде: {3} ^ {4} = {5}", b1, b2, b1XORb2,

Convert. ToString(b1, 2).PadLeft(8, '0'),

Convert. ToString(b2, 2).PadLeft(8, '0'), Convert. ToString(b1XORb2, 2).PadLeft(8, '0'));

// Операции сдвига

// Сдвиг влево

Console. Write("Побитовая операция сдвига влево байта\nb1=");

b1 = byte. Parse(Console. ReadLine());

Console. Write("на число бит = ");

byte bits = Byte. Parse(Console. ReadLine());

byte b1Leftbits = (byte)(b1 << bits);

Console. WriteLine("Сдвиг влево {0} << {1} = {2};" +

" В бинарном виде: {3} << {1} = {4}", b1, bits, b1Leftbits,

Convert. ToString(b1, 2).PadLeft(8, '0'), Convert. ToString(b1Leftbits, 2).PadLeft(8, '0'));

// Сдвиг вправо

Console. Write("Побитовая операция сдвига вправо байта\nb1=");

b1 = byte. Parse(Console. ReadLine());

Console. Write("на число бит = ");

bits = Byte. Parse(Console. ReadLine());

byte b1Rightbits = (byte)(b1 >> bits);

Console. WriteLine("Сдвиг вправо {0} >> {1} = {2};" +

" В бинарном виде: {3} >> {1} = {4}", b1, bits, b1Rightbits,

Convert. ToString(b1, 2).PadLeft(8, '0'), Convert. ToString(b1Rightbits, 2).PadLeft(8, '0'));

break;

}

Console. ReadLine();