Поразрядные операторы - C# (203906)

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите пожалуйста с такой проблемкой... Хочу изучить С# ,разбираю Шилдта и никак не могу понять 1н пример :
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 ");
           }
}
Результат выполнения : 0 1 1 1 1 0 1 1 Cажите пожалуйста, что он делает? Сравнивает двоичные 123 и 128? или как?) но у меня не получилось прийти на бумаге к такому же результату... Возможно кто подскажет что почитать на эту тему) Заранее спасибо.

Решение задачи: «Поразрядные операторы»

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;   
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5
Похожие ответы