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. Установить в единицу каждый второй значущий бит целого числа А.

и проблемы возникли с первой же задачи =(
вот сам цикл подсчёта, но в большинстве тестов он не прав
C++
1
2
for (i=2; i<13; i++)
    k += (( a >> i) ^ 1);
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2013, 03:32
Ответы с готовыми решениями:

Работа с битами И Работа с символьными данными
1. Ввести 8 символов. В символе с наибольшим кодом заменить 5-й бит единицей, а в символе с...

Работа с битами.
Здрасте. Дана задача: Определить на сколько в числе А больше значущих битов, что равны единице, чем...

Работа с битами
Стоит задача: вывести все двоичные коды чисел от 0 и до 2n-1. Сделать напролом могу(переводить в...

Работа с битами
три раза писал но все равно не получается((( 1-)Ввести последовательность из 8 символов. Сравнить...

8
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
02.08.2013, 04:14 2
C++
1
2
for (i=2; i<13; i++)
    k += (( a >> i) & 1);
Добавлено через 1 минуту
^ - это XOR. 1^1==0

Добавлено через 1 минуту
для инвертирования бита можно его с единицей поксорить как раз

Добавлено через 1 минуту
Цитата Сообщение от luciys Посмотреть сообщение
Используя битовые операции проверить ли число А кратно 16 (вариации: кратно 4, кратно 8).
четвертый бит должен быть 1, все биты младше должны быть 0 (для кратности 16)
1
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
02.08.2013, 04:19  [ТС] 3
нужно же посчитать количество 0, а 0&1=0 же
0
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
02.08.2013, 04:21 4
Точно) Щас покумекаю
1
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
02.08.2013, 04:23  [ТС] 5
вот именно, мой котелок говорит, что вроде бы верно написал, но значит он плохо варит, если компилятор говорит обратное)
а вот с 4 задачей дали бы самому подумать =)
0
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
02.08.2013, 04:29 6
C++
1
2
for (i=2; i<13; i++)
    k += ((( a >> i) & 1)^1);
1
5 / 5 / 1
Регистрация: 27.11.2012
Сообщений: 160
02.08.2013, 04:31  [ТС] 7
спасибо огромное) а почему с хor-oм не работает?
0
73 / 73 / 18
Регистрация: 29.11.2011
Сообщений: 356
02.08.2013, 04:36 8
Я второй вариант удалил, бред написал, чота очень невнимательный сегодня.

Добавлено через 3 минуты
Цитата Сообщение от luciys Посмотреть сообщение
спасибо огромное) а почему с хor-oм не работает?
Ну вообще-то там есть 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.08.2013, 04:43
Помогаю со студенческими работами здесь

Работа с битами
Я уже задолбался... :wall: Может мне кто нибудь подскажет как из 00111010 (58) получить...

Работа с битами.
помогите!! как писать эту на программе с++ Ввести последовательность из 8 символов. Сравнить 5-й...

Работа с битами
В общем вот локальная проблема: есть int, который выступает в роли сетки нулей и единиц, два...

Работа с битами
Не могу понять, почему не правильно работает программа. Программа зашифровывает строку, выводит,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru