Поразрядные операторы - C# (203906)
Формулировка задачи:
Добрый день! Помогите пожалуйста с такой проблемкой...
Хочу изучить С# ,разбираю Шилдта и никак не могу понять 1н пример :
Результат выполнения : 0 1 1 1 1 0 1 1
Cажите пожалуйста, что он делает?
Сравнивает двоичные 123 и 128? или как?) но у меня не получилось прийти на бумаге к такому же результату...
Возможно кто подскажет что почитать на эту тему)
Заранее спасибо.
static void Main()
{
int t;
byte val;
val = 123;
for (t = 128; t > 0; t = t / 2)
{
t = 128;
if ((val & t) != 0) MessageBox.Show("1 ");
if ((val & t) == 0) MessageBox.Show("0 ");
}
}Решение задачи: «Поразрядные операторы»
textual
Листинг программы
using System;
namespace ConsoleApplication65
{
class Program
{
[Flags]
enum Test
{
First = 1,
Second = 2,
Third = 4
}
static void Main()
{
const Test value = Test.First | Test.Third; //Выбираем первый и третий параметр отмеченными
Console.WriteLine(IsSelected(value, Test.First) ? "First selected" : "First not selected");
Console.WriteLine(IsSelected(value, Test.Second) ? "Second selected" : "Second not selected");
Console.WriteLine(IsSelected(value, Test.Third) ? "Third selected" : "Third not selected");
Console.ReadKey();
}
private static bool IsSelected(Test value, Test expected) //Проверяем, стоит ли нужный бит в единицу
{
return (value & expected) != 0;
}
}
}