Написать функцию, меняющую порядок бит в байте - C (СИ)
Формулировка задачи:
написать функцию, меняющую порядок бит в байте.
заранее спасибо
Решение задачи: «Написать функцию, меняющую порядок бит в байте»
textual
Листинг программы
#include <stdio.h>
void print_bits(signed char ch)
{
int i;
for (i = 7; i >= 0; --i)
printf("%d", ch >> i & 1);
}
signed char reverse_bits(signed char ch)
{
signed char result = 0;
int i;
for (i = 7; i >= 0; --i)
result ^= (ch >> (7 - i) & 1) << i;;
return result;
}
int main(void)
{
print_bits(-10);
putchar('\n');
print_bits(reverse_bits(-10));
putchar('\n');
return 0;
}
Объяснение кода листинга программы
В данном коде реализованы две функции:
- Функция print_bits(signed char ch) принимает в качестве аргумента однобайтовый символ (подтип signed char) и выводит на экран значение каждого бита этого символа.
- Функция reverse_bits(signed char ch) принимает в качестве аргумента однобайтовый символ (подтип signed char) и возвращает однобайтовый символ, в котором порядок битов обратный. В функции main() вызываются эти две функции. Сначала выводится на экран значение битов аргумента -10, затем выводится значение битов результата функции reverse_bits(-10).