Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2013, 11:40   #1
Skeich
 
Регистрация: 13.10.2013
Сообщений: 6
Вопрос Побитовый сдвиг вправо (C)

Ребята! Нужна помощь. Есть у меня рабочая процедурка для побитового циклического сдвига ВЛЕВО. Нужно по образу и подобию реализовать такую же процедурку, только для сдвига ВПРАВО.

В общем-то, key - 56 битовый ключ (массив из 7 символов), numbits - кол-во бит, на которое надо сдвинуть

Ах, да. Суть в том, что в этом 56-битном блоке сдвигать нужно две его половины отдельно, т.е. с 1 по 28 бит и с 29 по 56.

GETBIT возвращает 1 если бит с указанным номером установлен, 0 - если не установлен.
SETBIT устаналвивает значение бита с указанным номером
CLRBIT устанавливает значение бита с указанным номером в 0

Код:
void CKey::KeyShift(unsigned char *key, const int numbits)  //смещение 56 битового ключа на 1 или 2 бита влево в зависимости от итерации 

{


	int   i;
	char keep = key[0];


	for (i = 0; i < numbits; i++)
	{
		int j;


		for (j = 0; j < 7; j++)
		{
			if (j && (key[j] & 0x80))  //Если старший бит текущего байта установлен,
				key[j - 1] |= 0x01;        // сдвигаем его в младший бит предыдщуего байта
			key[j] <<= 1;
		}


		if (GETBIT(key, 27))
		{
			CLRBIT(key, 27);
			SETBIT(key, 55);
		}


		if (keep & 0x80)
			SETBIT(key, 27);


		keep <<= 1;

	}
}

Последний раз редактировалось Skeich; 04.12.2013 в 11:47.
Skeich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ побитовый сдвиг ошибка NinjaNoob Помощь студентам 2 12.10.2012 23:06
амперсанд и побитовый сдвиг Kukurudza Общие вопросы C/C++ 7 27.07.2011 01:08
сдвиг массива вправо tem_80 Общие вопросы C/C++ 5 01.02.2011 15:21
Побитовый сдвиг Belii09878 Помощь студентам 10 02.02.2010 14:46
C++ побитовый сдвиг KOLYTFR Помощь студентам 1 03.06.2009 22:42