Конспект 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();


