Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение битов числа 
:(
    Опции темы
Idsa
Дата 9.3.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



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


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Void
Дата 9.3.2007, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 25
Всего: 173



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;
}



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Idsa
Дата 9.3.2007, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



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


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Idsa
Дата 10.3.2007, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



Мне нужно получить биты для переменной типа 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. Что делать?

Это сообщение отредактировал(а) Idsa - 10.3.2007, 00:19


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
nikitao
Дата 10.3.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 4
Всего: 26



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

Код

BitConverter.DoubleToInt64Bits(i);


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


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Idsa
Дата 10.3.2007, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 14
Всего: 62



nikitao, +1. Метод действительно оказался очень полезным.

Это сообщение отредактировал(а) Idsa - 10.3.2007, 04:21


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1521 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.