Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.07.2009, 23:30   #1
qwerty09
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 11
По умолчанию Как установить i-й бит целого числа

Как установить значение i-го бита целого числа b в 1?
Я делаю так:
int i = 2;
i = 1 << i;
int b = 0 | i;

Это правильный подход? Можно сделать это ещё проще?
qwerty09 вне форума Ответить с цитированием
Старый 08.07.2009, 23:49   #2
rangerx
Пользователь
 
Регистрация: 30.05.2009
Сообщений: 46
По умолчанию

Устанавливаем третий бит
Код:
int b = 10;
b |= 1 << 2;
Если вы используете C++(а не C), то смотрите класс bitset.
rangerx вне форума Ответить с цитированием
Старый 08.07.2009, 23:56   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Подход вроде правильный, только код какой-то непонятный.
b |= (1 << i); // set
b &= ~(1<<i); // clear
bitset - штука хорошая, но он явно не чтобы установить бит в числе, это скорее массив битов.

Последний раз редактировалось Somebody; 08.07.2009 в 23:58.
Somebody вне форума Ответить с цитированием
Старый 09.07.2009, 00:15   #4
qwerty09
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 11
По умолчанию

В книге Бентли "Жемчужины программирования" в самом начале увидел такую задачку - отобразить список целых чисел от 0 до 10 000 000 в битовый массив. То есть, если в списке присутствует число a, то a-й бит массива устанавливается в 1, если в списке этого числа нет - в 0. Мне показалось, что для этого нужно использовать массив целых чисел с размером 10 000 000 / 32 (считая целое число 4-байтным).
Какое ограничение на размер битсета?
qwerty09 вне форума Ответить с цитированием
Старый 09.07.2009, 00:20   #5
qwerty09
Пользователь
 
Регистрация: 08.07.2009
Сообщений: 11
По умолчанию

Для этой задачи наверное можно использовать
bitset<10 000 000> b = 0;
b[i] = 1;
qwerty09 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск целого числа в строке sven117 Общие вопросы C/C++ 9 01.07.2009 14:01
ВЫчисление дробей по модулю целого числа Камикадзе Помощь студентам 0 18.04.2009 09:29
сумма цифр целого числа mihsel Microsoft Office Excel 8 13.04.2009 13:57
Сбросить пятый бит числа С, если он установлен, в Assembler leest Помощь студентам 7 24.11.2008 01:04
разработать функцию, которая определяет сумму цифр целого числа IceAgainstIce Общие вопросы Delphi 5 20.11.2008 00:52