Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как выполнить циклический сдвиг битов вправо?

88K
19 апреля 2015 года
GoltikRee
2 / / 19.04.2015
Здравствуйте! Имеется число, которое принимает значения от 0 до 255 (тип - Byte; 8 бит), в котором нужно выполнить циклический сдвиг битов вправо. Соответственно, после сдвига должно получиться число от 0 до 255.
Я нашел этот код:
 
Код:
int shr(int a, int s)
{
   return (a>>s) | (a<<32-s);
}
Но он работает как-то странно - получаются числа намного превышающие 255. Подскажите, как это реализовать? Заранее спасибо.
88K
20 апреля 2015 года
GoltikRee
2 / / 19.04.2015
Разобрался, вот мое решение:
 
Код:
static Byte FMoveBits(Byte a, Byte s)
{
   return Convert.ToByte((a >> s%8) | ((a << (8 - s%8)) & 255));
}
247
19 апреля 2015 года
wanja
1.2K / / 03.02.2003
(a>>s) | (a<<8-s)|0xFF
11K
20 апреля 2015 года
xAtom
65 / / 17.01.2011
 
Код:
#include <limits.h>
typedef unsigned char byte;

byte shr(byte a, char i){
     return (a >> i) | (a << (CHAR_BIT - i));
}

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог