5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
|
||||||
1 | ||||||
работа с битами02.08.2013, 03:32. Показов 3005. Ответов 8
Метки нет Все метки)
(
доброй ночи, форумчане, необходима ваша помощь) как и всем тут...
вот изучаю с++ и добрался до работы с битами, учу решением задач. на форуме, правда не на этом, нашёл несколько задач: 1. Посчитать сколько нулей в числе с третьего по 13 бит, включая эти биты. 2. Инвертировать все биты с 2 по 14 включая эти биты. 3. Определить на сколько в числе А больше значущих битов, что равны единице, чем битов, что равны нулю. 4. Используя битовые операции проверить ли число А кратно 16 (вариации: кратно 4, кратно 8). 5. Установить в единицу каждый второй значущий бит целого числа А. и проблемы возникли с первой же задачи =( вот сам цикл подсчёта, но в большинстве тестов он не прав
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
02.08.2013, 03:32 | |
Ответы с готовыми решениями:
8
Работа с битами И Работа с символьными данными Работа с битами. Работа с битами Работа с битами |
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||||||
02.08.2013, 04:14 | 2 | |||||
^ - это XOR. 1^1==0 Добавлено через 1 минуту для инвертирования бита можно его с единицей поксорить как раз Добавлено через 1 минуту четвертый бит должен быть 1, все биты младше должны быть 0 (для кратности 16)
1
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
02.08.2013, 04:21 | 4 |
Точно) Щас покумекаю
1
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
||||||
02.08.2013, 04:29 | 6 | |||||
1
|
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
|
|
02.08.2013, 04:36 | 8 |
Я второй вариант удалил, бред написал, чота очень невнимательный сегодня.
Добавлено через 3 минуты Ну вообще-то там есть XOR. Смотри вообщем, в твоём коде что происходит. Например у нас число 0011 (для простоты 4 бита всего) В первую итерацию сдвигаем на 0, то есть ничего не сдвигаем, просто ксорим с 1: 0011^1==0010 (то есть 2 в десятичном) k+=2; и счётчик нулей становится 2(!). Тут-то и ошибка. Перед тем как прибавлять к счётчику, нужно биты старше нулевого обнулить, то есть сделать &1
1
|
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
|
|
02.08.2013, 04:43 [ТС] | 9 |
всё, понял ошибку. неправильно понимал работу, спасибо)
0
|
02.08.2013, 04:43 | |
Помогаю со студенческими работами здесь
9
Работа с битами
Работа с битами Работа с битами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |