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

циклический сдвиг подскажите - C++

Восстановить пароль Регистрация
 
kerzh
0 / 0 / 0
Регистрация: 18.03.2012
Сообщений: 30
22.03.2012, 19:03     циклический сдвиг подскажите #1
Необходимо написать программу со следующей функциональностью:


2. Функции циклического сдвига влево и вправо на заданное число разрядов. Если число разрядов, на которые производится сдвиг, больше или равно 8, то берется остаток от деления на 8. В этих двух функциях циклический сдвиг должен быть реализован в виде ОДНОГО выражения C++ (без операторов циклов и прочих)

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

C++
1
2
3
4
5
6
7
unsigned char ToTheRight(unsigned char x)
{
    int n;
    x>>n;
    x<<(sizeof(x)*8 - n);
    return x = x>>n | x<<(sizeof(x)*8 - n); 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 19:03     циклический сдвиг подскажите
Посмотрите здесь:

C++ Циклический сдвиг.
Циклический сдвиг C++
C++ циклический сдвиг
C++ Циклический сдвиг массива
C++ Циклический сдвиг матрицы
Циклический сдвиг C++
C++ Циклический сдвиг
Циклический сдвиг в матрице C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nxnx
Формучанин
361 / 292 / 16
Регистрация: 02.11.2010
Сообщений: 1,226
22.03.2012, 20:07     циклический сдвиг подскажите #2
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
static inline unsigned int ror(unsigned int val,unsigned char cnt)
{    
    asm ("and $7,%2\nror %2,%0\n":"=a"(val):"0"(val),"c"(cnt));
    return val; 
}
static char* _bin(unsigned int value)
{
    register int i;
    static char val[32+1];
    for (i=0;i<32;i++)
        val[31-i]=(value & 1<<i)?'1':'0';    
    return val[32]=0,val;
}
int main(void)
{
    unsigned int u=5,i;
    printf("\t%s\n",_bin(u));
    for (i=0;i<10;i++)
        printf("ror(%u):\t%s\n",i,_bin(ror(u,i)));
        
    
    return 0;
}
Yandex
Объявления
22.03.2012, 20:07     циклический сдвиг подскажите
Ответ Создать тему
Опции темы

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