В длинном целом числе N поменять тетрады (четыре соседних двоичных разряда) в зеркальном порядке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите,пожалуйста,написать программу.В длинном целом числе N поменять тетрады (четыре соседних двоичных разряда) в зеркальном порядке.

Решение задачи: «В длинном целом числе N поменять тетрады (четыре соседних двоичных разряда) в зеркальном порядке»

textual
Листинг программы
long N, res=0;
int s =  sizeof(long);
for(i=0; i<s; i+=4)
  res |= (((N>>(s-i-4))&15) << i);

Объяснение кода листинга программы

В данном коде:

  1. Объявляются три переменные: N, res, s.
  2. Переменная N содержит длинное целое число.
  3. Переменная res будет содержать результат.
  4. Переменная s содержит размер в байтах (8 или 4) переменной N.
  5. В цикле for перебираются все тетрады (группы по 4 двоичных разряда) числа N, начиная с самого старшего (наиболее значимого) разряда.
  6. Для каждой тетрады выполняется операция побитового И (res |=) с использованием сдвига (<<) и побитового И (&) с 15 (максимальное значение для 4-х разрядов).
  7. Результат каждой тетрады (в виде числа от 0 до 15) сдвигается влево на количество байтов, равное номеру текущей тетрады (от 0 до 3), и записывается в переменную res с использованием побитового И (res |=).
  8. В конце цикла значение переменной res будет содержать число, полученное из исходного числа N, в котором тетрады поменялись местами.

Оцени полезность:

15   голосов , оценка 4.467 из 5
Похожие ответы