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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2011, 11:21   #1
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию является ли n-ый бит 1 или 0?

всем привет, пытаюсь решить вот это
на ввод идет число, нужно определить какой бит этого числа является 1,и вывести номер этих битов,
например число С=0110101
ответ 5,4,2,0
Код:
for (int c=0; c<(1<<n); c++)
{
    for (int i=0; i<n; i++)
        if(c & (1<<i) >0)
          cout<<i;
}
 учитель показал этот пример, но число вводится ведь не в двоичной системе, а в десятичной, то как определить n?
заранее спасибо :)
3dg_fan вне форума Ответить с цитированием
Старый 11.09.2011, 11:27   #2
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

дык i+1 это и будет номер битов.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 11.09.2011, 11:47   #3
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию

notHaker, да, но вопрос в другом, сколько этих битов вообще в числе, например в пятерке три бита 101, ответ будет 2 и 0, если вводится 5
3dg_fan вне форума Ответить с цитированием
Старый 11.09.2011, 11:56   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

у типа int 32-бита вообще то.
и без разницы как вводится число, вы работаете с бинарным представлением в итоге(двоичная ссч) а не с десятичным как обычно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.09.2011, 12:00   #5
notHaker
Форумчанин
 
Аватар для notHaker
 
Регистрация: 01.12.2009
Сообщений: 569
По умолчанию

Ну и? А если там 20 битов и 0 и 2 также выставленны в единицу, то ответ будет другим? Без разницы, сколько там битов, главное что есть условие
Код:
if(c & (1<<i) >0)
с помощью которого можно выводить номер единичного бита или писать в массив его позицию - без разницы.
Код - это работа, а работа стоит денег.

pz-game.ru. 2d зомби-сурвивал для олдфагов.
notHaker вне форума Ответить с цитированием
Старый 11.09.2011, 12:18   #6
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Код:
   
    int value = 5;
    for ( int i = 0; i < sizeof( value ) * 8; ++i )
        if ( value & ( 1 << i ) ) cout << i << endl;
SnX вне форума Ответить с цитированием
Старый 11.09.2011, 12:36   #7
3dg_fan
Пользователь
 
Аватар для 3dg_fan
 
Регистрация: 25.12.2010
Сообщений: 38
По умолчанию

SnX, то что нужно, спасибо) забыла про sizeof() совсем, можно и без умножения на 8
3dg_fan вне форума Ответить с цитированием
Старый 11.09.2011, 12:38   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

нельзя без умножения, sizeof дает размер в байтах, а вам надо в битах.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка - "не является допустимым именем входа или отсутствует разрешение." maxflint БД в Delphi 0 12.05.2011 21:16
бит имейдж или канва? чтоподходит лутше? electrovolk Помощь студентам 1 15.01.2011 14:22
null или не является объектом MrJenika JavaScript, Ajax 4 07.05.2010 11:23
Ковертирование из png 24 бит в png 8 бит isat Общие вопросы .NET 0 22.03.2010 13:38
Проверка, является ли поле Memo пустым или нет. Ветас Помощь студентам 1 24.02.2008 12:47