Циклический сдвиг на C
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Циклический сдвиг на C - 2006-06-21 19:47:29
|
|
|
Transsformator
Сообщений: 114
Оценки: 0
Присоединился: 2006-05-21 13:24:02
|
Помогите plz кому не сложно. Нужно на чистом С(без asm) написать прогу, организующую циклический сдвиг влево на заданное кол-во позиций в 2 байтах. Т.е. пользователь вводит с клавы цифру(тип int), двоичный код записывается в 2 байта. Затем вводит кол-во позиций. Например, код введённой цифры 1000110101010011, и кол-во позиций равно 4. Должно получиться 1101010100111000, т.е. первые 4 цифры убираются и записываются на место последних 4, а оставшиеся 12 сдвигаются в начало.
Я сам пытался, но там какие-то косяки с операцией сдвига вправо(>>). Хотя скорее не косяки, а у меня руки кривые.[sm=1.gif] Если кто знает, посовтуйте хотя бы алгоритм.
|
|
|
Циклический сдвиг на C - 2006-06-21 20:08:37
|
|
|
Lex_Voodoo
Сообщений: 7328
Оценки: 0
Присоединился: 2004-12-07 13:55:12
|
quote:
—————-<BR>Цитата: Дата:21.06.2006 20:04:26, Автор:Transsformator ::
quote:
—————-<BR><BR>Цитата: Дата:21.06.2006 20:00:25, Автор:Python :: Вот, нашёл через поиск:<BR><BR><BR>как сделать flash - ролик, чтобы он не повторялся циклически ?<BR><BR><BR>Циклическая контрольная сумма —————- <BR><BR>Python, ты просто молодец. Мне это ОФИГЕННО помогло.[sm=9.gif] —————-
[sm=1.gif] Работаю над более умным алгоритмом поиска, через пару дней, наверное, он появится.
|
|
|
Циклический сдвиг на C - 2006-06-21 20:19:52
|
|
|
Transsformator
Сообщений: 114
Оценки: 0
Присоединился: 2006-05-21 13:24:02
|
Ребят, ну plz помогите. Могу дать 3 часа инета. Я не кидала(кстати, чаще всего эту фразу говорят именно всякие найопщики).[sm=1.gif] P.S. Кроме нета больше ничего нету.[sm=1.gif]
|
|
|
Циклический сдвиг на C - 2006-06-21 22:50:45
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
я понял что есть переменная типа uint16_t, и ты хочешь её циклически повернуть? Вообще, я бы всё-таки воспользовался бы асмом [sm=2.gif] а, если чисто C, то так:
uint32_t tmp = val; tmp <<= 2; val = (tmp & 0xFFFF) + (tmp >> 16);
где взять нечто в стиле uint32_t – тебе, на твоей платформе, виднее.
|
|
|
|
|