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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2012, 00:47   #1
ktulhobraz
 
Регистрация: 07.11.2012
Сообщений: 6
По умолчанию Циклический сдвиг тетрады в байте (С)

Господа, нужна ваша помощь.
Задача звучит так: Каждую младшую тетраду каждого байта сдвинуть циклически влево на число, содержащееся в двух старших битах старшей тетрады.
Т.е. 11010011 > 11011001
Хотелось бы, чтобы кто-то объяснил как собственно реализовать этот сдвиг, ибо никак не могу понять как сдвинуть так, чтобы не затронуть первые два бита. Все это нужно сделать без использования массивов.
Больше интересует подробное объяснение, чем просто пример кода, так как хочу сам разобраться во всем этом.
З.Ы. Еще было бы очень здорово, если кто-то объяснит вывод двоичного числа в Си. Написал функцию, но она подходит только для int'а. Лучше использовать Visual Studio от мелкомягких.
Буду очень благодарен за любую помощь)
ktulhobraz вне форума Ответить с цитированием
Старый 07.11.2012, 01:27   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,429
По умолчанию

Так как нету VS, то напишу кое-какие идеи.

Код:
void
binprint(unsigned char a)
{
    for (int i = 7; i >= 0; --i) {
        printf("%d", a >> i & 1);        
    }
    printf("\n");
}

...

unsigned char a;//сам байт
binprint(a);
unsigned int offset = a >> 6;//значение старших 2 битах
unsigned char b = a&0x0F;//значение в младшей тетраде
unsigned char c = b << 4 >> offset;
a = a&0xF0;
a += b >> offset;
a += c&0x0F;
binprint(a);
{теперь в а измененное число}
Небольшое пояснение:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 07.11.2012 в 17:55.
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
циклический сдвиг browserpro Помощь студентам 0 08.12.2011 20:48
циклический сдвиг zvir Помощь студентам 4 02.12.2011 09:41
циклический сдвиг revaldo666 Общие вопросы C/C++ 4 29.03.2011 17:34
Циклический сдвиг в С rand8154 Общие вопросы C/C++ 1 14.11.2009 01:49
Циклический сдвиг Mish92(21-09) Помощь студентам 0 07.11.2009 21:59