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

Поиск

Категории

Облако тегов

  << Предыдущий пост       Следующий пост >>  
От: 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


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