Поменять местами разряды младшего байта числа - C (СИ)

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

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

Зеркально поменять местами разряды младшего байта каждого числа.

Решение задачи: «Поменять местами разряды младшего байта числа»

textual
Листинг программы
#include <stdio.h>
 
unsigned int rev_low(unsigned int n){
    unsigned int j = 0, i = n & 0xFFU, p = 7;
    for(; i; i >>= 1, --p)
        j |= (i & 1) << p;
    return (n & ~0xFFU) | j;
}
 
int main(void){
    unsigned int n = 0xABCDF0F1;
    printf("%u\n", rev_low(n));
    getchar();
    return 0;
}

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

В данном коде на языке C выполняется следующие действия:

  1. Подключение заголовочного файла для работы с функцией отправки сообщений в консоль.
  2. Объявление функции rev_low с типом возвращаемого значения unsigned int и параметром типа unsigned int n.
  3. Внутри функции объявляются три переменные:
    • j - результат работы функции,
    • i - младший байт числа n,
    • p - счётчик бит, начиная с старшего бита.
  4. В цикле for происходит последовательное сдвигание бита i вправо и уменьшение значения p до тех пор, пока i не станет равным нулю.
  5. В каждой итерации цикла значение j дополняется битом i, сдвинутым на значение p (в исходном коде это 7, что означает, что бит i сдвигается на 7 позиций влево).
  6. По завершению цикла, результат выражения (n & ~0xFFU) приводит к тому, что из числа n удаляется младший байт (0xFFU), а затем к полученному числу добавляется значение переменной j.
  7. В функции main создаётся переменная n со значением 0xABCDF0F1, которое затем выводится на экран с помощью функции printf.
  8. Затем программа ожидает нажатия клавиши с помощью функции getchar, чтобы пользователь мог увидеть результат работы программы.
  9. Функция main возвращает 0, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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