![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
Neox_GeForce |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
Есть задачка. Узнать в каких разрядах числа имеются единицы. Тип числа int.
Условие: нужно использовать битовые операции или\або битовые поля. Например у меня есть число 121. Нужно с помощью битовых операций узнать в каких разрядах единицы. Тоесть ответом должны быть 1 и 3. Подскажите примерный аолгоритм этой задачи. Это сообщение отредактировал(а) Neox_GeForce - 25.3.2010, 19:36 -------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: нет Всего: 9 |
С помощью сдвига влево получаем число, имеющее единственную единицу в каждом последовательном разряде. Далее, с помощью битовой операции and (в С++ было &, в С точно не уверен как) проверяем - если наше число & полученное сдвигом равно 1, в этом разряде 1.
|
|||
|
||||
Artemon |
|
|||
а ты мне нравишься ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1771 Регистрация: 24.2.2004 Где: Челябинск Репутация: нет Всего: 20 |
121 = 1111001
Каким образом может получиться 1 и 3 ? -------------------- Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru |
|||
|
||||
Neox_GeForce |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
Ну например есть десятичное число 91129.
Как известно, что нумерация розрядов идет справа-налево. тоесть в этом десятичном числе первая единица находится в позиции 3 а вторая 4. Вот все это нужно сделать с помощью битовыx операции или\або битовыx полей. Я владею побитовыми операциями, подскажите вообще можно ли это сделать. -------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
|||
|
||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
Единицу двигай влево в цикле с помощью << и через операцию & между этой единицей и нужным числом смотри какой результат. Если ненулевой, значит в этом разряде единица, если нулевой значит ноль.
Это сообщение отредактировал(а) ИванМ - 25.3.2010, 22:23 |
|||
|
||||
Neox_GeForce |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 14.11.2007 Где: Украина Репутация: нет Всего: нет |
Сделал вот так. Но почему то оно видит только одну единицу, а должно бить 6
123(10)=1111011(2) результат :
-------------------- ![]() Челябинские программисты настолько суровы, что обходятся без компиляторов. Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска. |
||||
|
|||||
ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 13 Всего: 23 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |