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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
#1

Побитовый операторы - C++

24.06.2012, 15:08. Просмотров 1227. Ответов 8
Метки нет (Все метки)

Друзья, есть задачка на побитовые операторы, кто знает, как делать и объясните на примере что такое РОТАЦИЯ БИТОВ???

Напишите программу ротации битов для заданных чисел, представленных в шестнадцатеричном виде, когда биты с самых крайних разрядов не теряются, а переносятся на противоположную сторону
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2012, 15:08     Побитовый операторы
Посмотрите здесь:

Побитовый сдвиг - C++
Столкнулся с проблемой. У меня есть ключ - 0x1A305B98 Из него я получаю параметр путем int parm = (0x1A305B98 >> 20) & 0x1F;// = 3 ...

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

Побитовый сдвиг - C++
#include <iostream> using namespace std; int main(int argc, char** argv) { int a,b,c,i; cin >>a; cin >>c; cin >>b; do...

Побитовый сдвиг - C++
Выполнение данного кода приравнивает asd к нулю. Хотя должно к единице, судя по моим вычислениям. char asd = 10 & 2 >> 1; 1010 ...

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

Побитовый сдвиг - C++
Непонятна часть программы с 24 по 45 строку. Помогите разобраться, пожалуйста. #include <iostream> using namespace std; const int...

побитовый анализ переменной - C++
Привет, товарищи. Есть вот такая задача: Сосчитать разницу между всеми единичными и нулевыми значениями слова (8 бит). Например, вход ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
24.06.2012, 15:16     Побитовый операторы #2
Цитата Сообщение от kirya Посмотреть сообщение
что такое РОТАЦИЯ БИТОВ???
Цитата Сообщение от kirya Посмотреть сообщение
когда биты с самых крайних разрядов не теряются, а переносятся на противоположную сторону
........
lamerr
9 / 9 / 1
Регистрация: 05.04.2012
Сообщений: 26
24.06.2012, 15:18     Побитовый операторы #3
Здесь в самом условии задачи это написано Ротация - это и есть такой сдвиг, когда биты с крайних разрядов переносятся на противоположную сторону. Если выполнить ротацию влево числа 11001 на 1 разряд, получится 10011, т.е. сначала все разряды сдвигаются влево, при этом старший сохраняется, а затем сохранённое значение записывается в младший бит.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
24.06.2012, 15:19     Побитовый операторы #4
Пример: было двоичное число 00001111, из 8 разрядов. Сдвигаем влево, остаётся (пусто) 0000111, крайняя единичка отпадёт. Ставим её на освободившееся место, получаем 10000111.

16-битным числам соответствует тип unsigned short.
C++
1
2
3
4
5
6
7
8
9
unsigned short RCL(unsigned short val)
{
    return (val & 0x8000) ? ((val << 1) | 1) : (val << 1);
}
 
unsigned short RCR(unsigned short val)
{
    return (val & 1) ? ((val >> 1) | 0x8000) : (val >> 1);
}
kirya
-9 / 2 / 0
Регистрация: 01.06.2012
Сообщений: 87
24.06.2012, 15:28  [ТС]     Побитовый операторы #5
А сможешь целиком программку написать)???
Evg
Эксперт CАвтор FAQ
17463 / 5701 / 361
Регистрация: 30.03.2009
Сообщений: 15,648
Записей в блоге: 26
24.06.2012, 17:09     Побитовый операторы #6
Цитата Сообщение от lamerr Посмотреть сообщение
Ротация - это и есть такой сдвиг, когда биты с крайних разрядов переносятся на противоположную сторону
Мне всегда казалось, что такая хрень называется "циклический сдвиг".

Поискал, что ткое ротация, нашёл описания систем команд процессоров. Например, http://zxpress.ru/book_articles.php?id=1052
Ротация означает по сути дела циклический сдвиг, но с привлечением дополнительного флага переноса

Что конкретно нужно автору - хз, пусть выясняет. Реализация циклического сдвига описана здесь: Циклический сдвиг битов Циклический сдвиг по своей сути представляет собой замену старшего набора битов и младшего по границе, определяемой величиной сдвига

Добавлено через 2 минуты
Цитата Сообщение от kirya Посмотреть сообщение
представленных в шестнадцатеричном виде
Цитата Сообщение от Nick Alte Посмотреть сообщение
16-битным числам соответствует тип unsigned short
В общем тут тоже хз, что имел автор. Ибо число оно и в африке число, а 16-ричный вид - это всего лишь запись числа. Может и вправду имелось в виду 16-рязрядное число, а может и хз что
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,927
Завершенные тесты: 1
24.06.2012, 23:14     Побитовый операторы #7
Каков вопрос, таков и ответ... Однако же что-то многим топикстартерам надо лишь чтобы им написали сразу всё целиком, а на их долю пришлась бы только сумбурная формулировка задачи.
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.06.2012, 09:18     Побитовый операторы #8
Цитата Сообщение от lazybiz Посмотреть сообщение
когда биты с самых крайних разрядов не теряются, а переносятся на противоположную сторону
Это циклический сдвиг, а ротация бывает кадров, тогда одни люди уходят с ранее занимаемых должностей, а другие занимают их место.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.06.2012, 13:45     Побитовый операторы
Еще ссылки по теме:

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

Побитовый вывод переменной - C++
Добрый день. Появилась необходимость побитово вывести переменную (int и char); Как это можно реализовать? К примеру у меня есть char...

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

Как реализовать правильный побитовый сдвиг? - C++
Всем привет! У меня тупик в неожиданном месте) Я имею пару чаров и должен из них собрать int: char a1 = 224; char a2 = 18; ...

Не могу понять, как работает побитовый сдвиг - C++
Есть вот такой код: int invar, wv1, wv2, et, yt, resv; invar = 14; wv1 = invar &gt;&gt; 4; printf(&quot;%i\n&quot;, wv1); wv1 = wv1 &lt;&lt; 28; ...


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

Или воспользуйтесь поиском по форуму:
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
25.06.2012, 13:45     Побитовый операторы #9
Цитата Сообщение от taras atavin Посмотреть сообщение
Это циклический сдвиг, а ротация бывает кадров, тогда одни люди уходят с ранее занимаемых должностей, а другие занимают их место.
Не трудно догадаться что имел в виду ТС. Тем более это написал он сам.
Кстати ротация бывает не только кадровая...
Yandex
Объявления
25.06.2012, 13:45     Побитовый операторы
Ответ Создать тему
Опции темы

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