С точки зрения наиболее распространенного применения поразрядную операцию И можно рассматривать как способ подавления отдельных двоичных разрядов. Это означает, что если какой-нибудь бит в любом из операндов равен 0, то соответствующий бит результата будет сброшен в 0. Например:
1101 ООН 10101010
& _
10000010
В приведенном ниже примере программы демонстрируется применение поразрядного оператора & для преобразования нечетных чисел в четные. Для этой цели достаточно сбросить младший разряд числа. Например, число 9 имеет следующий двоичный вид: 0000 1001. Если сбросить младший разряд этого числа, то оно станет числом 8, а в двоичной форме — 0000 1000.
// Применить поразрядный оператор И, чтобы сделать число четным.
using System;
class MakeEven {
static void Main { ushort num; ushort i;”
for(i =1; i <= 10; i++) {
num = i;
Console.WriteLine("num: " + num); num = (ushort) (num & OxFFFE);
Console.WriteLine("num после сброса младшего разряда: "
+ num + "\n");
}
}
}
Результат выполнения этой программы приведен ниже.
num: 1
num после сброса младшего разряда: О num: 2
num после сброса младшего разряда: 2 num: 3
num после сброса младшего разряда: 2 num: 4
num после сброса младшего разряда: 4 num: 5
num после сброса младшего разряда: 4 num: 6
num после сброса младшего разряда: 6 num: 7
num после сброса младшего разряда: 6 num: 8
num после сброса младшего разряда: 8 num: 9
num после сброса младшего разряда: 8 num: 10
num после сброса младшего разряда: 10
Шестнадцатеричное значениеOxFFFE,используемое в поразрядном операторе И, имеет следующую двоичную форму: 1111 1111 1111 1110. Таким образом, поразрядная операция И оставляет без изменения все двоичные разряды в числовом значении переменнойnum,кроме младшего разряда, который сбрасывается в нуль. В итоге четные числа не претерпевают никаких изменений, а нечетные уменьшаются на 1 и становятся четными.
Поразрядным оператором И удобно также пользоваться для определения установленного или сброшенного состояния отдельного двоичного разряда. В следующем примере программы определяется, является ли число нечетным.
// Применить поразрядный оператор И, чтобы определить,
// является ли число нечетным.
using System;
class IsOdd {
static void Main { ushort num;
num = 10;
if((num & 1) == 1)
Console.WriteLine("He выводится.") ;
num = 11;
if((num & 1) == 1)
Console.WriteLine(num + " — нечетное число.");
}
}
Вот как выглядит результат выполнения этой программы.
11 — нечетное число.