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

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

Войти
Регистрация
Восстановить пароль
 
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100
#1

XOR и поразрядное или не работают - C++

29.03.2013, 22:41. Просмотров 466. Ответов 5
Метки нет (Все метки)

Собственно есть числа:
0011 0010 - bit_text[0]==1(идём справа налево)
0100 0011 - это биты val_bmp какого-то числа.

Мне надо bit_text[0] записать в самый младший бит val_bmp. Теперь как я рассуждал:
1.bit_text[0]==1 => то использую поразрядное или, чтобы в val_tmp самый младший бит был равен 1.
2.bit_text[0]!=1 => надо записать в val_tmp 0. Как это сделать? Надо использовать поразрядное исключающее или(XOR). В данном случае есть 2 случая: val_tmp==1 или val_tmp==0. Если val_tmp==1, то val_bmp=val_bmp^1 чтобы получился 0, а если там 0, то ничего не делаем, т.к. там уже как раз то число, которое нам нужно.

Собственно код, но почему-то не работает. Помогите решить проблему.
C
1
2
3
4
5
if(bit_text[0]==1) val_bmp=val_bmp|1; //если 1, то всегда будет 1 при поразрядном или
else
{
    if(val_bmp&1)val_bmp=val_bmp^1; //если там единица, то использую поразрядное исключающее или, если там 0, то ничего не делаем.
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.03.2013, 22:41     XOR и поразрядное или не работают
Посмотрите здесь:

C++ оператор XOR
C++ Поразрядное отрицание
C++ Поразрядные поразрядное И (&)
C++ "Поразрядное Исключающее Или" с присваиванием
C++ С какими библиотеками .lib или .dll програмы работают быстрее?
xor, not C++
C++ Xor или что-то ещё?
Xor encrypt C++
C++ Побитовое исключающее ИЛИ (XOR)
Зашифровать картинку или любой другой файл XOR шифрованием C++
XOR without XOR C++
C++ Поразрядное сравнение чисел

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,522
29.03.2013, 22:53     XOR и поразрядное или не работают #2
C++
1
2
3
4
if (bit_text[0]==0) 
  val_bmp &= ~1;
else
  val_bmp |= 1
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
29.03.2013, 22:56     XOR и поразрядное или не работают #3
При каком val_bmp наблюдается проблема?

Добавлено через 1 минуту
nonedark2008, тогда уж
C++
1
2
val_bmp &= ~1;
val_bmp |= bit_text[0];
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100
29.03.2013, 23:03  [ТС]     XOR и поразрядное или не работают #4
Цитата Сообщение от I.M. Посмотреть сообщение
При каком val_bmp наблюдается проблема?

Добавлено через 1 минуту
nonedark2008, тогда уж
C++
1
2
val_bmp &= ~1;
val_bmp |= bit_text[0];
Если bit_text==1, то всё ок.
Если bit_text!=1, то
если val_bmp&1 - то бишь там стоит 1, значение true, то я пытаюсь сделать val_bmp=val_bmp^1; чтобы получилос 1-1=0 в XOR(если оба по единице, то будет ноль). Собственно здесь вот и ошибка.

Добавлено через 31 секунду
Цитата Сообщение от nonedark2008 Посмотреть сообщение
C++
1
2
3
4
if (bit_text[0]==0) 
  val_bmp &= ~1;
else
  val_bmp |= 1
Не могли бы вы прокомментировать ваш код? Я его не понимаю
nonedark2008
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,522
29.03.2013, 23:37     XOR и поразрядное или не работают #5
Цитата Сообщение от aleksandr_t94 Посмотреть сообщение
Я его не понимаю
Если нужно установить 0, то берем 1, применяем к ней побитовое отрицание, получаем 0 в начале и все остальные - единицы, а далее побитовое И с нашим числом, получаем 0 в первом бите, а все остальное без изменеий. А если требуется установить 1, то просто побитовое ИЛИ.
aleksandr_t94
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 100
30.03.2013, 10:27  [ТС]     XOR и поразрядное или не работают #6
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Если нужно установить 0, то берем 1, применяем к ней побитовое отрицание, получаем 0 в начале и все остальные - единицы, а далее побитовое И с нашим числом, получаем 0 в первом бите, а все остальное без изменеий. А если требуется установить 1, то просто побитовое ИЛИ.
Понял, спасибо вам.
Yandex
Объявления
30.03.2013, 10:27     XOR и поразрядное или не работают
Ответ Создать тему
Опции темы

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