Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск целого числа в строке 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 02:04
разработать функцию, которая определяет сумму цифр целого числа IceAgainstIce Общие вопросы Delphi 5 20.11.2008 01:52


12:48.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.