С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/10: Рейтинг темы: голосов - 10, средняя оценка - 4.50
cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
1

Побитовый сдвиг

22.04.2012, 15:10. Просмотров 1743. Ответов 3
Метки нет (Все метки)

Выполнение данного кода приравнивает asd к нулю. Хотя должно к единице, судя по моим вычислениям.

C++
1
char asd = 10 & 2 >> 1;
1010
&0010
-------
0010
и потом сдвинуть 0010 вправо на 1 даст 0001. В чем просчет? Есть какие-то приоритеты?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 15:10
Ответы с готовыми решениями:

Побитовый сдвиг
Непонятна часть программы с 24 по 45 строку. Помогите разобраться, пожалуйста....

Побитовый сдвиг
есть допустим переменная unsigned char data = 0b10111011; Как можно...

Побитовый сдвиг
#include <iostream> using namespace std; int main(int argc, char** argv) {...

Побитовый сдвиг
Добрый день, помогите пожалуйста с побитовым сдвигом вправо, не получается...

Побитовый сдвиг
Столкнулся с проблемой. У меня есть ключ - 0x1A305B98 Из него я получаю...

3
Toshkarik
1150 / 867 / 90
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
22.04.2012, 15:12 2
Первой выполняется операция сдвига, потом только &.
0
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,756
Записей в блоге: 1
22.04.2012, 15:14 3
сдвиг без скобок приоритетнее битового "И"
C++
1
char asd = (10 & 2)>> 1;
0
cetrael
60 / 5 / 3
Регистрация: 01.10.2011
Сообщений: 93
22.04.2012, 15:24  [ТС] 4
Спасибо, тогда ещё вопрос, в чем разница:
C++
1
char zxc = ((*(reinterpret_cast<const char*>(&(todo == 0 ? length : (todo == 3 ? md: sec))) + cur_length_byte) & (1 << pos)) >> pos);
result = 0
C++
1
    char qwe = (((todo == 0 ? length : (todo  == 3 ? md: sec)) + cur_length_byte) & (1 << pos)) >> pos;
result = 1
При todo = 0, pos = 1, length = 9, cur_length_byte = 1
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2012, 15:24

Побитовый сдвиг массива
Есть двумерный массив int massiv;Нужно сдвинуть первый элемент массива в...

Побитовый сдвиг влево и вправо
Что выполнится быстрее - сдвиг влево или сдвиг вправо? И как замерить время...

Как происходит побитовый сдвиг?
for(int i = 0; i &lt; 10; i ++){ if (i &amp; (1 &lt;&lt; j)) cout &lt;&lt; i &lt;&lt; endl; }


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

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

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