| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Операции с битами в Си |
| Автор: nevermind 25.4.2005, 16:44 |
| Не подскажите как осуществить ротатцию битов в Си? (Как ассемблере 11100011 - 11110001 - 11111000 - 01111100 - 00111110 и т.д.) |
| Автор: _hunter 25.4.2005, 17:35 |
| >>n и <<n если сдвиг на один бит -- >>1 |
| Автор: maxim1000 25.4.2005, 23:05 | ||||
не, это - сдвиг ротация, это когда то, что сдвинулось в один конец, потом с другого вылазит если нужно циклически сдвинуть байт, то можно приблизительно так:
|
| Автор: nevermind 29.4.2005, 23:54 |
| спасибо |
| Автор: bel_nikita 30.4.2005, 00:13 | ||
|
| Автор: maxim1000 30.4.2005, 12:32 | ||
я не уверен, но мне казалось, что это синонимы... |
| Автор: AISIN 30.4.2005, 17:46 | ||||
| maxim1000Так и есть! если верить моей большой энциклопедии, а я привык верить своей энциклопедии...
В моем компиляторе содержиться пример ротации в файле rotr.c. можно использовать в своей программе в виде функции unsigned _rotr(val, shift) вызывается с помощью _lrotr ( unsigned long val, int shift ). И файл rotl.c c функциями unsigned _rotl(val, shift) и вызывается с помощью _lrotr ( unsigned long val, int shift ). Хотя при необходимости их можно вызвать напрямую.
А я что сказал? _lrotr ( unsigned long val, int shift ). |
| Автор: Sardar 30.4.2005, 21:04 |
| Одной ассемблерной инструкцией это делается, под любым процессором есть, обычно RTL/RTR называються. Смотри справочник. |
| Автор: nevermind 14.9.2005, 02:52 | ||
| прошло достаточно много времени, задача уже давно выполенена, решил вот на память запостить работающий вариант. мож кому пригодится
|
| Автор: Romikgy 14.9.2005, 08:32 |
| ИМХО с асмовыми вставками было бы проще |
| Автор: nevermind 14.9.2005, 14:47 |
| Я пишу пользуюсь Eclipse, mingw compiler, intel processor. Пытался вставить asm, но никак не получается, выдает постоянно ошибку. Не мог бы ты написать простенький примерчик для наглядности. |
| Автор: Romikgy 15.9.2005, 08:49 | ||
Мог бы
Нужны пояснения? ЗЫ Тонкости в гугле по словам : AT&T Assembler GNU Assembler или для начала http://sig9.com/articles/att-syntax http://cs.wwc.edu/~aabyan/Unix/x86.html |