Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Писарев Иван
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 44
#1

Работа с битами в Char - C++

06.09.2013, 22:52. Просмотров 487. Ответов 6
Метки нет (Все метки)

Доброго времни суток!
Стоит задача сделать операцию сложения битов по модулю 2 над двумя объектами типа char, приравнять полученный результат третей переменной типа char. На пальцах:
char, насколько я помню, состоит из 8 биотв. Допустим, имеются две переменные char, имеющие следующие битовые состовляющие(прощу прощения за не технический язык):
a = 10111010
b = 11111111

Сделаем необходимую операцию над каждым битом и запишем в переменную с того же типа:

c[i]=a[i]^b[i], где i - номер бита(от 0 до 7);

C++
1
2
3
4
for(int i=0; i<8; i++)
    {
        (c>>i) = (a>>i)&(b>>i);
    }
Данный цикл по какой-то причине не работает.

Переменные не обязательно должны быть числами. Заранее благодарен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2013, 22:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с битами в Char (C++):

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

работа с битами - C++
доброй ночи, форумчане, необходима ваша помощь) как и всем тут... вот изучаю с++ и добрался до работы с битами, учу решением задач. на...

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

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

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

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

6
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
06.09.2013, 22:55 #2
Цитата Сообщение от Писарев Иван Посмотреть сообщение
Стоит задача сделать операцию сложения битов по модулю 2 над двумя объектами типа char
Есть же опертор ^
1
Писарев Иван
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 44
06.09.2013, 23:01  [ТС] #3
Цитата Сообщение от Dani Посмотреть сообщение
Есть же опертор ^
Да, вы правы, прошу прощения. Во время описания проблемы по глупости поставил вместо оператора ^ оператор &. Тем не менее, даже с правильным оператором, все равно не работает.

Добавлено через 4 минуты
так же пробовал c = (a>>i)&(b>>i), но тоже бред получался.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
06.09.2013, 23:05 #4
Писарев Иван, c = a^b; Оно уже сделает все за вас! (сложит все биты по модулю 2)
1
Писарев Иван
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 44
06.09.2013, 23:14  [ТС] #5
Цитата Сообщение от Dani Посмотреть сообщение
Писарев Иван, c = a^b; Оно уже сделает все за вас! (сложит все биты по модулю 2)
В цикле
C++
1
2
3
4
for(int i=0; i<8; i++)
    {
        (c>>i) = (a>>i)^(b>>i);
    }
ошибка: " выражение должно быть допустимым для изменения левосторонним значением"

а если поставить не (c>>i) = (a>>i)^(b>>i);, а c = (a>>i)^(b>>i); программа работает неверно.
Вот в чем заключается моя проблема.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
06.09.2013, 23:19 #6
Писарев Иван, ты думаешь, что тебе самому надо проходить по всем битам, а стандартный оператор сделает это за тебя! http://codepad.org/m4AaWU75
1
Писарев Иван
0 / 0 / 0
Регистрация: 05.09.2012
Сообщений: 44
06.09.2013, 23:25  [ТС] #7
Цитата Сообщение от Dani Посмотреть сообщение
Писарев Иван, ты думаешь, что тебе самому надо проходить по всем битам, а стандартный оператор сделает это за тебя! http://codepad.org/m4AaWU75
Сижу битый час над этой операцией... А оказывается все просто) У меня возникала такая идея, но по глупости я ее применял не к char, a к char*. Огромное спасибо!)
0
06.09.2013, 23:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2013, 23:25
Привет! Вот еще темы с ответами:

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

Работа с битами - C++
три раза писал но все равно не получается((( 1-)Ввести последовательность из 8 символов. Сравнить 5-й и 6-й биты каждого символа. Если...

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

Работа с битами числа - C++
Извлечь 5 битов числа A, начиная со второго и вставить их в число B, начиная с третьего бита. Нашел код...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru