ГЛАВНАЯ     АРХИВ     НАПИСАТЬ АДМИНУ     ПОДПИСАТЬСЯ НА 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 00:57

Рассмотрим какие возможности по работе с битами предлагает C#. В этом посте рассмотрим коллекции битов, потенциально любой длины.В пространстве имен System.Collections есть класс BitArray, который содержит в себе компактный битовый массив и позволяет выполнять операции как над битами, так и над такими массивами. Объект класса BitArray может расти почти до бесконечности, если это требуется, но существует предел использования памяти и производительности при работе с экземпляром класса.BitArray имеет следующие возможности (более подробно см.MSDN):

1) инициализация из массивов булевских значений, байтов или значениз Int32, инициализация по размеру и с заполнением значением по умолчанию.

2) позволяет считывать/устанавливать значения каждого из битов, также заполнять все или избранные биты заданным значением

3) позволяет выполнять над объектами типа BitArray следующие операции: And, Or, Xor, Not, Equals

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

Пример создания BitArray:


using System;
using System.Collections;

class Program
{
static void Main()
{
bool[] array = new bool[5];
array[0] = true;
array[1] = false;
array[2] = true;
array[3] = false;
array[4] = true;

BitArray bitArray = new BitArray(array);
foreach (bool bit in bitArray)
Console.WriteLine(bit);

Console.ReadKey();
}
}


Пример установки битов и подсчет количества установленных в 1 битов:

using System;
using System.Collections;

class Program
{
static void Main()
{
BitArray bitArray = new BitArray(32);

bitArray[3] = true;
bitArray[5] = true;
bitArray.Set(10, true);

Console.WriteLine("--- Total bits ---");
Console.WriteLine(bitArray.Count);

Console.WriteLine("--- Total bits set to 1 ---");
Console.WriteLine(CountBitArray(bitArray));
}

static int CountBitArray(BitArray bitArray)
{
int count = 0;
foreach (bool bit in bitArray)
{
if (bit)
{
count++;
}
}
return count;
}
}


Пример побитовых операций:

using System;
using System.Collections;
public class SamplesBitArray
{

public static void Main()
{
BitArray myBA1 = new BitArray(4);
BitArray myBA2 = new BitArray(4);
myBA1[0] = myBA1[1] = false;
myBA1[2] = myBA1[3] = true;
myBA2[0] = myBA2[2] = false;
myBA2[1] = myBA2[3] = true;

Console.WriteLine("Initial values");
Console.Write("myBA1:");
PrintValues(myBA1, 8); Console.Write("myBA2:");
PrintValues(myBA2, 8);
Console.WriteLine();

Console.WriteLine("Result");
Console.Write("XOR:");
PrintValues(myBA1.Xor(myBA2), 8);
Console.WriteLine();

Console.WriteLine("After XOR");
Console.Write("myBA1:");
PrintValues(myBA1, 8);
Console.Write("myBA2:");
PrintValues(myBA2, 8);
Console.WriteLine();

try
{
BitArray myBA3 = new BitArray(8);
myBA3[0] = myBA3[1] = myBA3[2] = myBA3[3] = false;
myBA3[4] = myBA3[5] = myBA3[6] = myBA3[7] = true;
myBA1.Xor(myBA3);
}
catch (Exception myException)
{
Console.WriteLine("Exception: " + myException.ToString());
}

Console.ReadKey(true);
}

public static void PrintValues(IEnumerable myList, int myWidth)
{
int i = myWidth;
foreach (Object obj in myList)
{
if (i <= 0)
{
i = myWidth;
Console.WriteLine();
}
i--;
Console.Write("{0,8}", obj);
}
Console.WriteLine();
}
}


И на последок: побитоввые сдвиги в типе явно не реализованы, так как BitArray более пригоден для набивания битами некоего битового потока или действий над одинаковыми многобитовыми значениями. Как, например, происходит в архиваторах или некоторых алгоритмах шифрования.


Вы хотите научиться зарабатывать деньги в интернете, а также показать всем свои творческие способности? Так в чем же дело? Учитесь создавать сайты на wordpress и зарабатывайте!

Kirov Portal- информационный развлекательный интернет портал города Кирова.

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


Вопросы на собеседовании 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:06:15 #

дааа, наследие дельфи дает о себе знать

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




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


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