Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
1

Как происходит побитовый сдвиг?

17.05.2015, 21:40. Показов 2197. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
for(int i = 0; i < 10; i ++){
if (i & (1 << j))
cout << i << endl;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2015, 21:40
Ответы с готовыми решениями:

Как реализовать правильный побитовый сдвиг?
Всем привет! У меня тупик в неожиданном месте) Я имею пару чаров и должен из них собрать int: ...

Не могу понять, как работает побитовый сдвиг
Есть вот такой код: int invar, wv1, wv2, et, yt, resv; invar = 14; wv1 = invar &gt;&gt; 4;...

Побитовый сдвиг без изменения переменной (не понимаю как работает код)
Я до этого не особо использовал C++, но тут потребовалось разобраться с тем как устроено...

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

6
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
17.05.2015, 21:54 2
Биты сдвигаются вправо или влево на один или несколько разрядов.
0
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
17.05.2015, 22:54  [ТС] 3
Я имею ввиду: можете ли наглядно рассказать как происходит сдвиг?
И можно ли такую операцию просто в С# использовать?
0
55 / 56 / 34
Регистрация: 29.12.2012
Сообщений: 478
17.05.2015, 23:05 4
Лучший ответ Сообщение было отмечено Vaderkos как решение

Решение

тут надо знать двоичную систему

Добавлено через 4 минуты
Например если взять сейчас 8-ку и применить к ней сдвиг, то он вернет другое число:
00001000 сдвинется вправо на две позиции ( 00001000 ) и станет 00000010
0
84 / 83 / 8
Регистрация: 31.03.2015
Сообщений: 447
17.05.2015, 23:06  [ТС] 5
Это я понимаю, я не понимаю сравнение с i. Каким образом оно сравнивает?
И почему данная операция в С# не работает?
0
21 / 21 / 19
Регистрация: 18.03.2014
Сообщений: 148
17.05.2015, 23:07 6
Лучший ответ Сообщение было отмечено Vaderkos как решение

Решение

Vaderkos, на счет C# не знаю. В целом, каждый бит сдвигается на одно значение влево или вправо в зависимости от выбранного типа сдвига.

А сравнивает операцией "конъюнкция". Если в числе оба соответствующих бита равны единице, то и в результате получаем единицу.
0
Эксперт .NET
6507 / 4084 / 1605
Регистрация: 09.05.2015
Сообщений: 9,548
17.05.2015, 23:16 7
Цитата Сообщение от Vaderkos Посмотреть сообщение
И можно ли такую операцию просто в С# использовать?
Конечно можно:
C#
1
2
3
4
5
6
int j = 3;
for (int i = 0; i < 10; i++)
{
    if ((i & (1 << j)) != 0)
        Console.WriteLine(i);
}
1
17.05.2015, 23:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2015, 23:16
Помогаю со студенческими работами здесь

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

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

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

Побитовый сдвиг
#include &lt;iostream&gt; using namespace std; int main(int argc, char** argv) { int a,b,c,i; cin...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru