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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.95
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
#1

реализация ROR и ROL для int - C++

19.01.2013, 19:33. Просмотров 2772. Ответов 31
Метки нет (Все метки)

Помогите реализовать ROR и ROL для чисел типу int, если задано число типу int и количество, на которое идёт сдвиг
ROR/ROL - циклический сдвиг вправо/влево
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2013, 19:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос реализация ROR и ROL для int (C++):

Реализация функции char *padl(const char *string, int len, int c=' ') - C++
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

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

Написать функцию SUM (int M, int N) / С++ для начинающих - C++
Написать функцию SUM (int M, int N), которая вычисляет и возвращает сумму всех чисел кратных 3 и 9 в пределах от M и N включительно ....

Моя реализация функции перевода string в int - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int str_to_int(string a); int main() { string s =...

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

31
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
19.01.2013, 20:11 #2
V_Ghost, проверяеш какой бит перед вылетом.делаеш сдвиг << и потом пихаеш его в хвост. операции | и & в помощь
1
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 00:35  [ТС] #3
я знаю, как работает циклический сдвиг, но проблема не в этом....
как реализировать циклический сдвиг, если он складается с 4х битов, но в памяти компютера же хранится в 32 (число типа int)?
к примеру число 9, не надо все 32 бита использовать..а только 4, как тогда?интересует вопрос реализации чисел у которых к-во бит меняется динамически.
0
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 908
20.01.2013, 00:47 #4
V_Ghost, << делает сдвиг всему инту, а не одному байту
0
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 00:48 #5
C++
1
2
3
4
5
6
7
8
int fror(int n,int len) //ROR function
{           
    if ( (n%2)==1 )
    {
        return ((n>>len)|0x80);
    }
    return n>>len;
}
аналогично влево
1
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 00:50  [ТС] #6
KronoZ93,
n - это наше начальное число, которое мы будем сдвигать?
а len - это к-во битов, на которые мы будем сдвигать?
0
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 00:57 #7
Цитата Сообщение от V_Ghost Посмотреть сообщение
KronoZ93,
n - это наше начальное число, которое мы будем сдвигать?
а len - это к-во битов, на которые мы будем сдвигать?
Да.

Добавлено через 1 минуту
Кстате вы не с КИ случайно?)
1
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 00:57  [ТС] #8
KronoZ93, случайно оттуда)
0
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 00:58 #9
Цитата Сообщение от V_Ghost Посмотреть сообщение
KronoZ93, случайно оттуда)
Який варіант курсака?)
0
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 01:01  [ТС] #10
KronoZ93, 11
0
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 01:04 #11
Цитата Сообщение от V_Ghost Посмотреть сообщение
KronoZ93, 11
...
0
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 01:05  [ТС] #12
Цитата Сообщение от KronoZ93 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
int fror(int n,int len) //ROR function
{           
    if ( (n%2)==1 )
    {
        return ((n>>len)|0x80);
    }
    return n>>len;
}
аналогично влево
не работает, я как бы задал сдвиг на 3 число 1010
Должно быть: 0101
получилось: 1(т.е. 0001)
0
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 01:13 #13
Цитата Сообщение от V_Ghost Посмотреть сообщение
не работает, я как бы задал сдвиг на 3 число 1010
Должно быть: 0101
получилось: 1(т.е. 0001)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
int fror(int,int);
int main(){
    int num,len;
    cin>>num>>len;
    cout<<fror(num,len);
    return 0;}
 
 
int fror(int n,int len) //ROR function
{           
    if ( (n%2)==1 )
    {
        return ((n>>len)|0x80);
    }
    return n>>len;
}
проверь в калукуляторе.
если сдвинуть число 10 на 3 то будете переполнение.
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
20.01.2013, 01:16 #14
KronoZ93, Вы видать не совсем понимаете понятие циклического сдвига. Выталкиваемые биты должны помещаться на места новых.
0101 >> 1 == 1010
0110 >> 2 == 1001
1
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 01:23 #15
Цитата Сообщение от Toshkarik Посмотреть сообщение
KronoZ93, Вы видать не совсем понимаете понятие циклического сдвига. Выталкиваемые биты должны помещаться на места новых.
0101 >> 1 == 1010
0110 >> 2 == 1001
так вы посмотрите в калькуляторе как работает ROR.
моя функция делает циклический сдвиг, числа int 4байта (32бит) то есть если чило
число 12 = 1100, сдвинуть на 3 выйдет....
0110
0011
1000 0000 0000 0000 0000 0000 0000 0001
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2013, 01:23
Привет! Вот еще темы с ответами:

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.

для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1); - C++
вот int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1);

[Linker error] undefined reference to `sterling(int, int, int)' - C++
#include &lt;iostream&gt; using namespace std; int sterling(int,int,int); int sterling(int,int); int sterling(int); int main() { ...

[Linker Error] Unresolved external 'Sort(int near*near ,int, int) - C++
не могу понять в чем ошибка при компиляции ошибок не выдает при запуске программы - выдает эту ошибку Unresolved external 'Sort(int...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
20.01.2013, 01:23
Ответ Создать тему
Опции темы

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