Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)

Бодибилдинг
Программы тренировок для занятий штангой, гантелями; описание тренажеров

Я записываю курсы!
  Курс валют

НБУ курс евро






c# - Битовый флаг enum



На днях столкнулся с необходимостью задания битовой маски для пользовательского перечисления. Вспомнил, что когда то очень быстро понял роль задания маски на простом примере. И сейчас я хочу поделиться своим опытом. Многие знакомы с перечислениями:

            enum Season
            {
                Winter,
                Spring,
                Summer,
                Autumn
            }

Здесь мы описали перечисление времен года. Их всего четыре. А если мы хотим добавить межсезонье?! Тогда следует еще добавить столько же значений. А если мы хотим получить все месяцы года, то мы определяем перечисление с 12-ю прозициями. Конечно, следует позаботиться о том, что б ни одно значение в перечислении не имело дубликат среди остальных. То-есть, каждое значение в перечисление должно быть уникальным. Собственно, для этого перечисления и существуют. Так все таки при чем тут битовая маска.

Вспомним битовое представление данных 20, 21, 22, 23, …, 2n. Этот ряд и есть последовательность чисел 1,2,4,8,…,1024. Кто мало знаком с компьютерными вычислениями скажу, что в электронных представлениях битовая запись записывается в обратном направлении, то-есть 1024, …, 8, 4, 2, 1. Переведя на язык битовых флагов мы получим битовое представление любого числа, где знак «1» соответствует присутствию значения в данной позиции, «0» - позиция не несет нагрузки.

К примеру, число 1 представлено записью 00000001 (количество предшествующих нулей не имеет значения). То-есть имеем 0+0+0+0+0+0++0+20. Число 2 представляется записью 000010 – это соответствует 0+0+0+0+21+0. Число 3 – 000011 – 0+0+0+0+21+20. Число 13 представляем 0001101 -> 0+0+0+23+22+0+20 (0+0+0+8+4+0+1).

Смысл битового представления, я думаю ясен. Главное премущество битового представления – это, во первых, отсутствие дублирующихся значений, а во вторых, гарантия того, что любое число может быть получено строго одним набором битовых позиций. Не существует два разных набора бит, сумма значений которых даст одинаковый результат. Можете это сами проверить – любое число будет иметь строго единственную последовательность нулей и единиц.

Вернемся к нашему вопросу. Что если мы создаем перечисление, представляющее значения из битовой линейки. Ну к примеру:

    [Flags]
    enum MyBit
    {
        V1 = 1,
        V2 = 2,
        V3 = 4,
        V4 = 8,
        V5 = 16
    }
    

Теперь попробуем вывести битовые комбинации для чисел от 1 до 31

class Program
        {
            [Flags]
            enum MyBit
            {
                V1 = 1,
                V2 = 2,
                V3 = 4,
                V4 = 8,
                V5 = 16
            }

            static void Main(string[] args)
            {
                ShowAllBits();
                Console.ReadKey();
            }
            static void ShowAllBits()
            {
                for (int i = 1; i < 32; i++)
                    Console.WriteLine("{0} - {1}", i, (MyBit)i);
            }
        }
        

Результаты работы программы:

Как видим, любое число из диапазона [1, 31] представлено сугубо одним битовым набором. Заметьте, что следующим значением в перечислении может идти только V6 = 32. В этом и состоит значение атрибута Flags.



Больше информации читайте по теме:

c# метод преобразования (получения) Guid из string с проверкой по Regex (регулярные выражения)
Многовариантная регулярка для номера телефона на c#
Новый стиль создания обьектов - C#
C# - Паттерн MVC (Model View Controller)
Переопределение событий в C#.
Применяем делегаты, лямбда выражения и события вместе
C# Делегаты, анонимные методы, лямбда выражения.
Шаблон Factory Method
Методы расширения в C#
Использование делегатов в событиях на C# - Часть 2
Использование делегатов в событиях на C#
Автозапуск программы в C#
Обобщенные делегаты на C#
Регулярные выражения в c#
c# - сортировка List<T>
Пространства имен в c#
c# - Использование Shell (для получения списка файлов/папок)
Методы классов Math и Random в c#
Строковые массивы класса string в c#
c# - Символьные массивы
Массивы в C#
Операторы языка C#
Операции языка C# и особенности их использования
Шифрование на c# (хеш-код строки по алгоритму MD5)
Отписка от событий в c#
Примеры регулярных выражений на c# (класс RegularExpressions.Regex)
c# - итератор для списка Dictionary (foreach для словаря)
Перемешивание списков (массивов) любых типов на c# - противоположность сортировки
c# - CultureInfo (IFormatProvider) и конвертация, приведение числовых типов
Работа в c# с DateTime - получение набора дат в текущем году
GZip - архивация (упаковка) файлов на c#
DateTime - пример определения даты и времени
Время выполнения операций c#
Паттерн (шаблон) SingleTon средствами c#
Обобщенная коллекция Dictionary
c# структуры - не классы?! А что же это - struct VS class
Создание пользовательских событий на c#
Выборка файлов из директории и поддиректорий на c#
Делегаты и методы на c#
Запуск одного экземпляра приложения на c#



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Черный список покупателей
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок