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

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

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

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

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

Помогите реализовать ROR и ROL для чисел типу int, если задано число типу int и количество, на которое идёт сдвиг
ROR/ROL - циклический сдвиг вправо/влево
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2013, 19:33     реализация ROR и ROL для int
Посмотрите здесь:

Функции float average(int arrray[],int from,int to) C++
C++ Сannot convert ‘int (*)[10]’ to ‘int*’ for argument ‘4’ to ‘int
C++ для чего нужна эта строчка в с++ int x_step = (iter % 2 == 0 ? 1 : -1); и int y_step = (iter % 2 == 0 ? -1 : 1);
C++ Моя реализация функции перевода string в int
C++ Преобразовать int в const int для установки размера массива
C++ Напишите функцию f(int& m1, int& m0, int N), которая воз- вращает первую и последнюю цифры двузначного натурального числа N
Как понять int a(int x,int y, int z)? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
19.01.2013, 20:11     реализация ROR и ROL для int #2
V_Ghost, проверяеш какой бит перед вылетом.делаеш сдвиг << и потом пихаеш его в хвост. операции | и & в помощь
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 00:35  [ТС]     реализация ROR и ROL для int #3
я знаю, как работает циклический сдвиг, но проблема не в этом....
как реализировать циклический сдвиг, если он складается с 4х битов, но в памяти компютера же хранится в 32 (число типа int)?
к примеру число 9, не надо все 32 бита использовать..а только 4, как тогда?интересует вопрос реализации чисел у которых к-во бит меняется динамически.
Invader_Zim
Twilight Parasite
153 / 149 / 2
Регистрация: 21.07.2011
Сообщений: 907
20.01.2013, 00:47     реализация ROR и ROL для int #4
V_Ghost, << делает сдвиг всему инту, а не одному байту
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 00:48     реализация ROR и ROL для int #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;
}
аналогично влево
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 00:50  [ТС]     реализация ROR и ROL для int #6
KronoZ93,
n - это наше начальное число, которое мы будем сдвигать?
а len - это к-во битов, на которые мы будем сдвигать?
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 00:57     реализация ROR и ROL для int #7
Цитата Сообщение от V_Ghost Посмотреть сообщение
KronoZ93,
n - это наше начальное число, которое мы будем сдвигать?
а len - это к-во битов, на которые мы будем сдвигать?
Да.

Добавлено через 1 минуту
Кстате вы не с КИ случайно?)
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 00:57  [ТС]     реализация ROR и ROL для int #8
KronoZ93, случайно оттуда)
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 00:58     реализация ROR и ROL для int #9
Цитата Сообщение от V_Ghost Посмотреть сообщение
KronoZ93, случайно оттуда)
Який варіант курсака?)
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 01:01  [ТС]     реализация ROR и ROL для int #10
KronoZ93, 11
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 01:04     реализация ROR и ROL для int #11
Цитата Сообщение от V_Ghost Посмотреть сообщение
KronoZ93, 11
...
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 01:05  [ТС]     реализация ROR и ROL для int #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)
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 01:13     реализация ROR и ROL для int #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 то будете переполнение.
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,383
Завершенные тесты: 1
20.01.2013, 01:16     реализация ROR и ROL для int #14
KronoZ93, Вы видать не совсем понимаете понятие циклического сдвига. Выталкиваемые биты должны помещаться на места новых.
0101 >> 1 == 1010
0110 >> 2 == 1001
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 01:23     реализация ROR и ROL для int #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
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 01:24  [ТС]     реализация ROR и ROL для int #16
KronoZ93,
если 10 => 1010 сдвинуть на 3 влево, то буде в результате 0101(5), никакого переполнение быть в циклическом сдвиге не может, поскольку к-во битов не меняется в операнде и самы бити не изменяются, они просто двигаются
если 10 => 1010 сдвинуть на 3 вправо, то результат будет 0101 (5)
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,383
Завершенные тесты: 1
20.01.2013, 01:25     реализация ROR и ROL для int #17
KronoZ93, как я понял, ТС нужно только первые 4 бита. Или вообще произвольное число бит.
V_Ghost
9 / 9 / 0
Регистрация: 03.03.2011
Сообщений: 116
20.01.2013, 01:29  [ТС]     реализация ROR и ROL для int #18
Toshkarik, у меня операнди типа int, но я должен использовать динамически созданное/введеное число
например число 9 - я должен работать только из 4 младшими битами, потомучто при сдвиге единичка в старшем розряде, вместо того что б перейти в 0 младший бит, пойдет в 5 старший бит

Добавлено через 2 минуты
прикол в том, что при динамическом числе мне нужно постоянное динамическое к-во реальных битов в числе, а не все 32, как хранит компютер
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,383
Завершенные тесты: 1
20.01.2013, 01:30     реализация ROR и ROL для int #19
V_Ghost, и в каком диапазоне? По старшему биту? Ну например:

0000 0000 0000 0100 0010 0000 0000 0000
Какое число должно получится при сдвиги, скажем, влево на 5?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2013, 01:31     реализация ROR и ROL для int
Еще ссылки по теме:

C++ Написать функцию SUM (int M, int N) / С++ для начинающих
C++ Void send(int* to, int* from, int count)
Как считать данные в vector<pair<int, pair<int, int>>> arr(m) ? C++
Написать функции для преобразования IP адреса из dot-decimal нотации в int и из int в dot-decimal нотацию C++
C++ [Linker Error] Unresolved external 'Sort(int near*near ,int, int)

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

Или воспользуйтесь поиском по форуму:
KronoZ93
4 / 4 / 0
Регистрация: 17.01.2013
Сообщений: 27
20.01.2013, 01:31     реализация ROR и ROL для int #20
Цитата Сообщение от V_Ghost Посмотреть сообщение
Toshkarik, у меня операнди типа int, но я должен использовать динамически созданное/введеное число
например число 9 - я должен работать только из 4 младшими битами, потомучто при сдвиге единичка в старшем розряде, вместо того что б перейти в 0 младший бит, пойдет в 5 старший бит

Добавлено через 2 минуты
прикол в том, что при динамическом числе мне нужно постоянное динамическое к-во реальных битов в числе, а не все 32, как хранит компютер
V_Ghowt если ты делаешь курсач по той же методичке что и я, то вот этот вариант то что надо)
я у препода спрашивал.
Yandex
Объявления
20.01.2013, 01:31     реализация ROR и ROL для int
Ответ Создать тему
Опции темы

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