Поменять местами разряды младшего байта числа - 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 выполняется следующие действия:
- Подключение заголовочного файла
для работы с функцией отправки сообщений в консоль. - Объявление функции rev_low с типом возвращаемого значения unsigned int и параметром типа unsigned int n.
- Внутри функции объявляются три переменные:
- j - результат работы функции,
- i - младший байт числа n,
- p - счётчик бит, начиная с старшего бита.
- В цикле for происходит последовательное сдвигание бита i вправо и уменьшение значения p до тех пор, пока i не станет равным нулю.
- В каждой итерации цикла значение j дополняется битом i, сдвинутым на значение p (в исходном коде это 7, что означает, что бит i сдвигается на 7 позиций влево).
- По завершению цикла, результат выражения (n & ~0xFFU) приводит к тому, что из числа n удаляется младший байт (0xFFU), а затем к полученному числу добавляется значение переменной j.
- В функции main создаётся переменная n со значением 0xABCDF0F1, которое затем выводится на экран с помощью функции printf.
- Затем программа ожидает нажатия клавиши с помощью функции getchar, чтобы пользователь мог увидеть результат работы программы.
- Функция main возвращает 0, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д