Здравствуйте, emergenter, Вы писали:
E>Как можно сдвинуть вправо циклически биты не прибегая к командам ассемблера?
ИМХО Все таки эффективней будет сделать асемблерную вставку
__asm { }
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>Здравствуйте, emergenter, Вы писали:
E>>Как можно сдвинуть вправо циклически биты не прибегая к командам ассемблера?
SDB>Операторы побитового сдвига: << и >>.
только оно не циклическое, придется еще код сверху писать
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, SchweinDeBurg, Вы писали:
SDB>>Здравствуйте, emergenter, Вы писали:
E>>>Как можно сдвинуть вправо циклически биты не прибегая к командам ассемблера?
SDB>>Операторы побитового сдвига: << и >>.
J>только оно не циклическое, придется еще код сверху писать
Ну, это я понимаю. Думаю, что оператор for emergenter'у знаком.
Здравствуйте, emergenter, Вы писали:
E>Как можно сдвинуть вправо циклически биты не прибегая к командам ассемблера?
По идее следующий код должен работать:
Циклический сдвиг вправо на N бит (x и y по 32 бита) :
Отлично. Только мы говорим о С++, а не о возможных значениях этого слова. И на Вашем месте я бы спрятал скобки со словом КОБОЛ, несолидно как-то
Re[6]: Циклический сдвиг вправо средствами C++
От:
Аноним
Дата:
27.05.04 08:09
Оценка:
А>Причем здесь не нужный.
Ну, наверное, при виде слова 'циклический' непроизвольно хочется добавить цикл (или пару)
Re[2]: Циклический сдвиг вправо средствами C++
От:
Аноним
Дата:
27.05.04 08:28
Оценка:
D>Циклический сдвиг вправо на N бит (x и y по 32 бита) : D>
D>y = (x>>N)|(x<<(32-N))
D>
При использовании этого кода важно помнить что сдвиг вправо для занковых и беззаноквых типов работает по разному. Пример выше для signed int для отрицательных значений цикличности обеспечивать не будет.
Здравствуйте, dyattle, Вы писали:
D>Здравствуйте, emergenter, Вы писали:
E>>Как можно сдвинуть вправо циклически биты не прибегая к командам ассемблера? D>По идее следующий код должен работать:
D>Циклический сдвиг вправо на N бит (x и y по 32 бита) : D>
D>y = (x>>N)|(x<<(32-N))
D>
typedef<class T, class U>
inline T ror(U x, unsigned shift)
{
return ((T)x>>shift)+((T)x<<(sizeof(T)*BITCOUNT));
}