Аддитивные и сдвиговые операции. Примеры применений.
Аддитивные (сложения): + -
Сдвиг: << (влево) >> (вправо)
Общий формат записи этих операторов такой:
значение >> число битов; значение << число_битов.
Здесь значение — это объект операции сдвига, а элемент число_битов указывает, на сколько разрядов должно быть сдвинуто значение. При сдвиге влево на один разряд все биты, составляющее значение, сдвигаются влево на одну позицию, а в младший разряд записывается нуль. При сдвиге вправо все биты сдвигаются, соответственно, вправо. Если сдвигу вправо подвергается значение без знака, в старший разряд записывается нуль. Если же сдвигу вправо подвергается значение со знаком, значение знакового разряда сохраняется. При сдвиге как вправо, так и влево крайние биты теряются. Поскольку разряды представления двоичных чисел представляют собой степени числа 2, то операторы сдвига можно использовать в качестве быстрого способа умножения или деления чисел на 2. При сдвиге влево число удваивается. При сдвиге вправо число делится пополам. Конечно же, это будет справедливо до тех пор, пока с одного или другого конца не выдвинутся (и потеряются) значимые биты.
14. Операции отношения и действий над типами данных. Примеры применений.
<><= >= is (проверка принадлежности типу) as (приведение к типу)
С помощью оператора is можно определить, имеет ли рассматриваемый объект заданный тип. Общая форма его записи имеет следующий вид: выражение is ТИП
Здесь тип элемента выражение сравнивается с элементом ТИП. ЕСЛИ ТИП элемента выражение совпадает (или совместим) с элементом ТИП, результат выполнения операции принимается равным значению ИСТИНА. В противном случае — значению ЛОЖЬ.
Демонстрация выполнения оператора is:
class A {} class В : A {}
class Usels {
public static void Main() {
A a = new A () ;В b = new В();
if (a is A) Console.WriteLine("Объект а имеет тип A.");
if(b is A) Console.WriteLine("Объект b совместим с типом А, " + "поскольку его тип выведен из типа А.");
if(a is В) Console.WriteLine("Этот текст не будет отображен, " + "поскольку объект а не выведен из класса В.")
if(b is В) Console.WriteLine("Объект b имеет тип В."); if(a is object) Console.WriteLine("а — это объект."); }}
Иногда во время работы программы требуется выполнить операцию приведения типов, не генерируя исключение в случае, если попытка окажется неудачной. Для этого предусмотрен оператор as, формат которого таков: выражение as тип
Используемый здесь элемент выражение участвует в попытке приведения его к типу, заданному элементом тип. В случае успешного выполнения этой операции возвращается ссылка на тип. В противном случае возвращается нулевая ссылка.
Демонстрация использования оператора as:
classA {} class В : A {}
class CheckCast {
public static void Main() {
A a = new A(); В b = new В() ;
b = a as В; // Выполняем операцию приведения типов, если она возможна.
if(b==null)
Console.WriteLine("Операция приведения типов " + "b = (В) а НЕ РАЗРЕШЕНА.");
else Console.WriteLine( "Операция приведения типов b = (В) а разрешена.");
Логические операции. Примеры применений.
Логическое И (&), логическое исключающее ИЛИ (^), логическое ИЛИ ( | ).