Значение байта без инверсии: 0; двоичная форма: 00000001

Значение байта с инверсией: 255; двоичная форма: 11111110

*/

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

Пример 2.6. Использование сдвиговых операций.

using System;

Class Demo

{ public static string ByteToStr(byte b)

// Преобразование байта (b) в двоичную форму

{ ... // Код функции смотри в примере 2.5

}

Static void Main()

{ Console.WriteLine("Демонстрация сдвига разрядов " +

"целого числа:");

byte b = 1;

for (int i = 1; i <= 8; i++)

{ Console.WriteLine("Значение байта: {0,3};\t" +

"двоичная форма: {1}", b, ByteToStr(b));

int k = (int) b;

b = (byte)(k << 1);

}

Console.ReadLine();

}

}

/* Вывод:

Демонстрация сдвига разрядов целого числа:

Значение байта: 1; двоичная форма: 00000001

Значение байта: 2; двоичная форма: 00000010

Значение байта: 4; двоичная форма: 00000100

Значение байта: 8; двоичная форма: 00001000

Значение байта: 16; двоичная форма: 00010000

Значение байта: 32; двоичная форма: 00100000

Значение байта: 64; двоичная форма: 01000000

Значение байта: 128; двоичная форма: 10000000

*/

Условная операция ?: имеет три операнда:

<условие> ? <выражение_1> : <выражение_2>;

Например:

int а = 1, b = 4, с;

с = (а > b) ? а : b; // Результат: с = 4

а = (с > 0) ? ++а : ++Ь; // Результат: а = 2

C# допускает использование сокращенных записей операций с присваиванием (составного присваивания):

А += В вместо А = А + В А &= В вместо А = А & В

А -= В вместо А = А - В А |= В вместо А = А | В

А *= В вместо А = А * В А ^= В вместо А = А ^ В

А /= В вместо А = А / В А <<= В вместо А = А << В

А %= В вместо А = А % В А >>= В вместо А = А >> В

Методы класса System.Match

(http://msdn.microsoft.com/ru-ru/library/system.math)

Таблица 2.7. Поля и основные методы класса System.Math

Члены Описание
Поля  
E Представляет основание натурального логарифма, определяемое константой e = 2.71828182845904523536.
PI Представляет отношение длины окружности к ее диаметру, определяемое константой π = 3.14159265358979323846.
Методы  
double Abs(double d); Возвращает модуль аргумента. Имеются перегруженные методы для всех математических типов (Decimal, Single, SByte, Int16, Int32, Int64)
double Acos(double d); Возвращает угол в радианах по его арккосинусу
double Asin(double d); Возвращает угол в радианах по его арксинусу
double Atan(double d); Возвращает угол в радианах по его арктангенсу
long BigMul(int x, int y); Возвращает произведение двух 32-разрядных чисел
double Ceiling(double d); Возвращает наименьшее целое число, которое больше или равно аргументу. Имеется перегруженный метод для типа Decimal
double Cos(double d); Возвращает косинус угла d в радианах
double Cosh(double d); Возвращает гиперболический косинус угла d в радианах
int DivRen (int a, int b, out int R); Возвращает результат деления двух целых чисел и остаток R как выходной параметр. Имеется перегруженный метод для типа Int64
double Exp(double d); Возвращает Е в степени d
double Floor(double d); Возвращает наибольшее целое, которое меньше или равно заданному числу. Имеется перегруженный метод для типа Decimal
double IEEERemainder (double a, double b); Возвращает остаток от деления а на b
double Log(double d); Возвращает натуральный логарифм числа d. В перегруженном методе вторым параметром передается основание логарифма
double Log10(double d); Возвращает десятичный логарифм числа d
double Max (double a, double b)); Возвращает максимальное из двух чисел. Имеются перегруженные методы для всех математических типов (Decimal, Single, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64)
double Min (double a, double b); Возвращает меньшее из двух чисел. Имеются перегруженные методы для всех математических типов (Decimal, Single, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64)
double Pow (double a, double b); Возвращает результат возведения числа а в степень b
double Round(double a); double Round (double a, Int32 n); Округляет число а до ближайшего целого (или до n разрядов). Имеется перегруженный метод для типа Decimal
int Sign(double a); Возвращает -1, 0 или +1, когда число а, соответственно, меньше нуля, равно ему или больше нуля. Имеются перегруженные методы для всех математических типов (Decimal, Single, SByte, Int16, Int32, Int64)
double Sin(double a); Возвращает синус угла а в радианах
double Sinh(double a); Возвращает гиперболический синус угла а в радианах
double Sqrt(double a); Возвращает корень квадратный из а
double Tan(double a); Возвращает тангенс угла а в радианах
double Tanh(double a); Возвращает гиперболический тангенс угла а в радианах
double Truncate(double a) Возвращает целую часть заданного числа a. Имеется перегруженный метод для типа Decimal


Пример 2.7. Использование методов класса System.Math для определения высоты, площади и углов трапеции по ее известным сторонам.



Значение байта без инверсии: 0; двоичная форма: 00000001 - student2.ru Дано: Трапеция ABCD; основания: a = 20 см, c = 10 см, бок. стороны: b = 8 см, d = 6 см.   Найти: h, S, α, β.

Формулы: Значение байта без инверсии: 0; двоичная форма: 00000001 - student2.ru (ф-ла Герона);

Значение байта без инверсии: 0; двоичная форма: 00000001 - student2.ru => Значение байта без инверсии: 0; двоичная форма: 00000001 - student2.ru ;

Значение байта без инверсии: 0; двоичная форма: 00000001 - student2.ru ;

sin α = h / b ; Ðαрад = arcsin α ; Ðαград = αрад · 180 / π ;

sin β = h / d ; Ð βрад = arcsin β ; Ð βград = βрад · 180 / π .

using System;

Class MathTrapezoid

{ static void Main()

{ double a = 20.0; // Большее основание

double c = 10.0; // Меньшее основание

double b = 8.0; // Левая сторона

double d = 6.0; // Правая сторона

Console.WriteLine("Основания трапеции равны 20 и 10 см, " +

"боковые стороны - 8 и 6");

// Вычисление высоты трапеции

double p = (a - c + b + d) / 2.0;

double S_ABD = Math.Sqrt(p * (p - a + c) * (p - b) * (p - d));

double h = 2.0 * S_ABD / (a - c);

Console.WriteLine("Высота трапеции: " + h.ToString());

// Вычисление площади трапеции

double S_ABCD = (a - c) * h / 2.0;

Console.WriteLine("Площадь трапеции: " + S_ABCD.ToString());

// Вычисление левого нижнего угла трапеции (в радианах)

double sinA = h / b;

double AlphaRad = Math.Round(Math.Asin(sinA), 2);

Console.WriteLine("Левый нижний угол: " + AlphaRad.ToString() +

" (радиан)");

// Вычисление правого нижнего угла трапеции (в радианах)

double sinB = h / d;

double BetaRad = Math.Round(Math.Asin(sinB), 2);

Console.WriteLine("Правый нижний угол: " + BetaRad.ToString() +

" (радиан)");

// Вычисление левого нижнего угла трапеции (в градусах)

double AD = AlphaRad * 180 / Math.PI;

double AlphaDegree = Math.Round(AD, 2);

Console.WriteLine("Левый нижний угол: " +

AlphaDegree.ToString () + " (градусов)");

// Вычисление правого нижнего угла трапеции (в градусах)

double BD = BetaRad * 180 / Math.PI;

double BetaDegree = Math.Round(BD, 2);

Console.WriteLine("Правый нижний угол: " +

BetaDegree.ToString() + " (градусов)");

Console.ReadLine();

}

}

/* Вывод:

Наши рекомендации