ВОПРОС · Q&A

Побитовые операции

5 ответов 4,4 тыс.
Автор вопроса
Задание 1. Составить ф-цию, которая кодирует символ (инвертирует порядок битов в байте). Ф-ция возвращает закодированный символ.

Задание 2. Даны позитивные числа x, n, q. Составить программу, которая инвертирует в х n бит, начиная с позиции q (остальные биты не меняются).
 
Вы уверены? Написано "инвертировать порядок битов". Я так понял сделать седьмой нулевым, шестой первым и т.д.
Я ответил так, как сам понимаю...
Скорее всего что Вы правы...
 
Если инвертировать порядок бит:
C++:
char reverse( char c )
{
int		i;
char	v = 0;
for ( i = 0; i < 8; i++ ) {
v |= ((c >> i) & 1) << (7 - i);
}
return v;
}

Если же все-таки инвертировать биты то:
C++:
	byte = ~byte;
или же (равнозначно предыдущему):
C++:
	byte ^= 0xff;