В однобайтовую переменную занести попорядку значения старшего и младшего битов - C (СИ)

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

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

дано длинное целое неотрицательное число. В однобайтовую переменную занести попорядку значения старшего и младшего битов для каждого байта исходного числа. помогите с решением на си

Решение задачи: «В однобайтовую переменную занести попорядку значения старшего и младшего битов»

textual
Листинг программы
#include <stdio.h>
#include <limits.h>
 
void foo( unsigned num, unsigned char *rez ) {
    
    unsigned i = CHAR_BIT;
    unsigned shr = sizeof( unsigned ) * CHAR_BIT - 1;
 
    while ( i-- ) {
        *rez |= ( ( ( num >> shr ) & 1 ) << i );
        num <<= ( i % 2 ? CHAR_BIT - 1 : 1 );
    }
}
 
int main () {
 
    unsigned x = 0x00018081;
    /*
        x =
            0000 0000
            0000 0001
            1000 0000
            1000 0001
    */
    unsigned char y = 0;
 
    foo( x, &y );
    printf( "%x\n", y );
 
    return 0;
}

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

В этом коде задача состоит в том, чтобы разбить однобайтовый двоичный номер на два байта и вывести их. Список действий:

  1. Включаем необходимые заголовочные файлы
  2. Определяем функцию, которая будет выполнять необходимые действия
  3. В функции объявляем переменные:
    • num - двоичное число, которое необходимо разбить
    • rez - указатель на однобайтовый буфер, в который будут заноситься полученные значения
    • i - счётчик бит
    • shr - смещение для сдвига числа
  4. В цикле сдвигаем число влево, тем самым перенося старший бит на младшее место
  5. Получаем старший бит с помощью операции >> и сдвигаем его на текущую позицию младшего бита с помощью операции <<
  6. Заносим полученное значение в буфер
  7. Выводим полученный результат

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


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

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

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