Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Получение битов числа


Автор: Idsa 9.3.2007, 21:20
Коллекция BitArray позволяет хранить биты числа. Однако в BitArray нет функционала для получения битов из числа.
Меня интересует, есть ли красивый способ получения битов числа, или придется реализовывать смещениями и масками?

Автор: Void 9.3.2007, 21:32
System.Collections.Specialized.BitVector32
Или с тем же BitArray:
Код
int n;
BitArray a = new BitArray(new int[] { n });
bool bit2 = a[2];


Только не сказал бы что так красивее. Если хочется, можно написать функцию в одну строчку:
Код
bool GetBit(int number, int bit)
{
    return (number >> bit) & 1 != 0;
}

Автор: Idsa 9.3.2007, 22:30
И BitVector32, и BitArray в моем случае подходят только для int. Ну что ж, придется пользоваться старым дедовским способом smile.

Автор: Idsa 10.3.2007, 00:19
Мне нужно получить биты для переменной типа float. Делаю вот так: float number = 3.1; (number >> i) & 1. Выдает ошибку "Error    1    Operator '>>' cannot be applied to operands of type 'float' and 'int'    C:\Documents and Settings\Idsa\Мои документы\Visual Studio 2005\Projects\LabySaod\Laba1\Program.cs    22    20    Laba1
". Т. е. оператор >> не определен для float. Что делать?

Автор: nikitao 10.3.2007, 00:46
Да. Не определен. Забавно , но именно эту задачу меня спрашивали как решить, но тока на Паскале. ( там соответственно тип real ) . 

Код

BitConverter.DoubleToInt64Bits(i);


Думаю это то , что нужно ;) 

Автор: Idsa 10.3.2007, 04:02
nikitao, +1. Метод действительно оказался очень полезным.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)