ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА RSS     ВОЙТИ      

Поиск

Категории

Облако тегов

acer ado.net amd asp.net c sharp c# cms css exceptions google html ipad iphone it бизнес javascript jquery linq microsoft mysql net nokia nokia lumia samsung seo silverlight sql surface tsql windows 8 windows blue windows phone windows rt xna безопасность библиотека вопросы на собеседовании интересные проекты интернет интернет магазин исключения книга книги компьютерная безопасность компьютерные игры контролы курсы по программированию логированние исключений мобильные приложения монетизация сайтов наушники новости новости it новости microsoft новости интернет новости технологий ноутбук ноутбуки обработка исключений оптимизация острова периферия планшет планшеты поддержка сайтов поисковое продвижение программы продвижение продвижение сайта продвижение сайтов рабство разработка игр разработка сайтов раскрутка сайта рекламные технологии смартфон смартфоны собеседование создание сайтов средства разработки туризм фриланс хостинг яндекс
  << Предыдущий пост       Следующий пост >>  
От: inbruk
4. ноября 2010 01:06

В языках С и С++ есть низкоуровневые конструкции - битовые поля. Весьма удобное средство, чтобы добираться до отдельных битов и их групп в любом месте многобитного значения. Рассмотрим какие возможности по работе с битовыми полями предлагает C#. В пространстве имен System.Collections.Specialized есть структура BitVector32. В ней хранятся логические значения (биты) и двухбайтовые целые числа. BitVector32 более эффективно при работе с логическими значениями и двухбайтовыми целыми числами, чем применение класса BitArray. Но в отличие от BitArray у структуры BitVector32 размер всегда 32 бита. Структура имеет следующие возможности (более подробно см.MSDN):


1) создаваться из другой такой структуры или Int32


2) позволяет содавать окана в 32-х битном значении меньшего размера и добираться до их содержимого как до отдельных значений


3) также позволяет создавать побитовые маски и менять/получать внутренние значения с помощью них


4) также, что не мало важно, умеет печатать себя во вполне читабельном виде

5) позволяет получить внутреннее значение в виде Int32, для того чтобы обработать его каким-нибудь другим образом, например, выполнить побитовый сдвиг


using System;
using System.Collections.Specialized;

namespace BitVector32Test
{
class Class1
{

static void Main(string[] args)
{
BitVector32 vector1 = new BitVector32( 0 );

/* Маски для первых пяти битов */
int bit1 = BitVector32.CreateMask();
int bit2 = BitVector32.CreateMask(bit1);
int bit3 = BitVector32.CreateMask(bit2);
int bit4 = BitVector32.CreateMask(bit3);
int bit5 = BitVector32.CreateMask(bit4);

Console.WriteLine(vector1.ToString()); /* Получаем BitVector32{00000000000000000000000000000000} */

vector1[bit1] = true; /* установить 1 бит */

Console.WriteLine(vector1.ToString()); /* Получаем BitVector32{00000000000000000000000000000001} */

vector1[bit3] = true; /* установить 3 бит */

Console.WriteLine(vector1.ToString()); /* Получаем BitVector32{00000000000000000000000000000101} */

vector1[bit5] = true; /* установить 5 бит */

Console.WriteLine(vector1.ToString()); /* Получаем BitVector32{00000000000000000000000000010101} */

BitVector32 vector2 = new BitVector32( 0 );

/* Создаем 4 секции (окна). Первая имеет максимум значений 6, т.е занимает 4 бита. */
/* Вторая - максимум 3 (т.е. два бита), затем 1 бит, затем 4 бита. */
BitVector32.Section sect1 = BitVector32.CreateSection( 6 );
BitVector32.Section sect2 = BitVector32.CreateSection( 3, sect1 );
BitVector32.Section sect3 = BitVector32.CreateSection( 1, sect2 );
BitVector32.Section sect4 = BitVector32.CreateSection(15, sect3 );

vector2[sect2] = 3;

Console.WriteLine(vector2.ToString()); /* Получим BitVector32{00000000000000000000000000011000} */

vector2[sect4] = 1;

Console.WriteLine(vector2.ToString()); /* Получим BitVector32{00000000000000000000000001011000} */

Console.ReadLine();
}
}
}


Бесплатные Флеш игры онлайн гонки

С кадровым агентством Лада подобрать няню малышу без хлопот, по лучшим условиям и со скидками

Интересуетесь здоровьем ? Тогда косметика мустела в москве для вас.

Похожие записи


Вопросы на собеседовании C#, Net, ASP.NET, SQL
Продолжая тему вопросов на собеседовании. Нашел еще одну подборку. Оригинал лежит здесь . Перенес, чтобы не затерялось. Есть вполне вменяемые ответы (хотя, на некоторые вопросы ответил бы по-другому). Ответы находятся после списка вопросов, я их не менял. 23. Что такое шаблон проектирования Model/View/Controller? Как и зачем его применяют? 2...

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

Silverlight, HTML5 и непрозрачная стратегия развития Microsoft
Оригинал статьи взят отсюда: Silverlight, HTML5 и непрозрачная стратегия развития Microsoft Автор: Peter Bright Переводчик: Mairon     По непонятным мне на данный момент причинам, похоже, что многие разработчики, присутствовавшие на недавней конференции PDC-2010 (Крупнейшая конференция Microsoft для разработчиков — Прим. переводчика), были сильн...

Комментарии

 
nobelwerfer 29.07.2011 18:07:24 #

более колбасного и извратного способа я не видел, я просто хренею с разработчиков RTL

Добавить комментарий




biuquote
  • Комментарий
  • Предпросмотр
Loading


  Сохранить комментарий