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

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

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

Циклический сдвиг битов! - C++

18.01.2013, 20:44. Просмотров 970. Ответов 8
Метки нет (Все метки)

Очень срочно нужна помощь.

Нужно реализовать функцию, которая осуществляет циклический сдвиг битов на 1 бит вправо в левом полубайте и на 1 бит влево в правом полубайте asci-кодов символов с инверсией всех битов.

Программа осуществляет кодировку-декодировку текста.

C++
1
2
3
4
unsigned Char Coding(unsigned char ch)
{
    return ~(((ch & 0x E0) >> 1) | ((ch & 0x07) <<1));
}
Вот что имеется, но совсем неуверен в правильности.

Добавлено через 14 минут
Кто-нибудь, ау!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.01.2013, 20:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Циклический сдвиг битов! (C++):

Циклический сдвиг битов - C++
Создайте функцию, которая перемещает биты для unsigned int на заданное число битов влево, причем выходящие при сдвиге за левую границу...

Циклический сдвиг битов 2 - C++
Помогите пожалуйста решить вопрос. Необходимо реализовать на С++ операцию циклического сдвига битов влево и вправо. Поиском наткнулся на...

Циклический сдвиг битов в строке - C++
Пишу шифрование IDEA. Там есть ключ длинной 128 бит. Этот ключ нужно сдвинуть на 25 бит влево... Собственно накалякал сдвиг для...

Циклический сдвиг битов в байте - C++
Привет. Мне нужно в байте (unsigned char) произвести циклический сдвиг. Как я понимаю &gt;&gt; и &lt;&lt; это не циклический сдвиг. Но как сделать...

Циклический сдвиг битов по столбцу в битовой матрице - C++
Нужна програмка которая создаёт матрицу битов 8х8 и дает возможность делать в ней цикличные сдвики вверх(или вниз) то есть биты с...

Циклический сдвиг битов в байте влево или вправо - C++
Кто-нибудь пробовал реализовать такую задачу на С++. Если да, то какой алгоритм? Например, если 32 &lt;&lt; 10, то в результате должны...

8
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,055
Записей в блоге: 17
18.01.2013, 20:53 #2
std::bitset<>;
std::rotate<>();
0
Sviatospam
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 27
18.01.2013, 20:59  [ТС] #3
Мне нужно именно этим методом.

Добавлено через 26 секунд
А не стандартными функциями.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
18.01.2013, 21:01 #4
Цитата Сообщение от Sviatospam Посмотреть сообщение
Мне нужно именно этим методом.
Ну так Вы же все сделали. В чем вопрос то?
0
Sviatospam
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 27
18.01.2013, 21:13  [ТС] #5
Он сдвигает на бит, но обычным методом. Вот я и спрашиваю, как сделать циклически?

Добавлено через 7 минут
Мне непонятна запись 0xE0. Что она означает?
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,055
Записей в блоге: 17
18.01.2013, 21:14 #6
Цитата Сообщение от Sviatospam Посмотреть сообщение
Мне непонятна запись 0xE0. Что она означает?
В 16- системе число E0 т.е 224dec
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
18.01.2013, 21:15 #7
Цитата Сообщение от Sviatospam Посмотреть сообщение
Он сдвигает на бит, но обычным методом. Вот я и спрашиваю, как сделать циклически?
C++
1
2
3
4
unsigned char Coding(unsigned char ch)
{
    return ~(((ch & 0xE0) >> 1) | ((ch & 0x10)<<3) | ((ch & 0x8)>>3) | ((ch & 0x07) <<1));
}
1
Sviatospam
0 / 0 / 0
Регистрация: 28.11.2012
Сообщений: 27
18.01.2013, 21:23  [ТС] #8
Большое спасибо)

Добавлено через 6 минут
А как организовать функцию декодирования?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13554 / 7705 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
18.01.2013, 21:35 #9
Цитата Сообщение от Sviatospam Посмотреть сообщение
А как организовать функцию декодирования?
Двигать в обратную сторону
C++
1
2
3
4
unsigned char EnCoding(unsigned char ch)
{
    return ~(((ch & 0x70) << 1) | ((ch & 0x80)>>3) | ((ch & 0x1)<<3) | ((ch & 0xE) >>1));
}
1
18.01.2013, 21:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2013, 21:35
Привет! Вот еще темы с ответами:

Циклический сдвиг. - C++
Нужно написать вот такую прогу, где нужно сдвинуть число а на n бит влево.

Циклический сдвиг - C++
Ребята, в чем может быть проблема? Надо организовать ф-цию циклического сдвига вправо. ТО бишь x-&gt;y, y-&gt;z, z-&gt;x. Что я делаю не так? ...

Циклический сдвиг - C++
Здравствуйте помогите пожалуйста мне надо все нечетные строки матрицы сдвинуть циклически на К элементов влево. Знаю тут ужас но не...

циклический сдвиг - C++
написать программу на СИ (обычном ,НЕ Си++), используя символьные массивы : Если число отрицательных элементов масива А чётно,то...


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

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

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