Битовая операция - C (СИ)

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

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

Выполнить проверку заданного (вводится с клавиатуры) бита числа В и если заданный бит имеет значение «ЛОЖЬ»(равен 0) , установить его. Переменные А и B должны иметь тип unsigned int. Исходные данные и результат вывести в десятичной, шестнадцатеричной системах счисления и в виде двоичного числа.

Решение задачи: «Битовая операция»

textual
Листинг программы
#include<stdio.h>
void binary(unsigned int x,unsigned int size);
unsigned int check(unsigned int b,unsigned int a);
int main(void)
{
    unsigned int a,b;
    printf("Enter number b (b>0): ");
    scanf("%u",&b);
    printf("Enter bit number a (a<0<=%d): ",8*sizeof(unsigned));
    scanf("%u",&a);
    
    printf("\n");
    printf("Source data\n");
    printf("decimal: %u\n",b);
    printf("heximal: %0*X\n",2*sizeof(unsigned),b);
    printf("binary: ");
    binary(b,8*sizeof(b));
    printf("\n\n\n");
    
    printf("bit number %d has value ",a);
    if(check(b,a))
    printf("1\n\n\n");
    else
    {
    printf("0\n\n\n");
    b=b|(1<<(a-1));
    }
 
    printf("Result\n");
    printf("decimal: %u\n",b);
    printf("heximal: %0*X\n",2*sizeof(unsigned),b);
    printf("binary: ");
    binary(b,8*sizeof(b));
    printf("\n");
    return 0;
}
void binary(unsigned int x,unsigned int size)
{
    if(!size)
    {
        return;
    }
    binary(x/2,--size);
    printf("%u",x%2);
}
unsigned int check(unsigned int b,unsigned int a)
{
    return b&(1<<(a-1));
}

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

  1. Включаем заголовочный файл inttypes.h для использования типов данных uint и size_t
  2. Объявляем функцию void binary(unsigned int x,unsigned int size), которая принимает два аргумента типа unsigned int: x и size. Значение x будет делиться на два в соответствии с размером переменной типа size_t.
  3. Объявляем функцию unsigned int check(unsigned int b,unsigned int a), которая принимает два аргумента типа unsigned int: b и a. Функция возвращает значение b с битом a, установленным в 1.
  4. В функции main() объявляем две переменные типа unsigned int: a и b.
  5. Выводим сообщение Enter number b (b>0): и считываем значение b с помощью функции scanf().
  6. Выводим сообщение Enter bit number a (a<0<=%d): и считываем значение a с помощью функции scanf().
  7. Выводим исходное число b в десятичной, шестнадцатеричной системе и его двоичное представление.
  8. Вызываем функцию binary(b,8*sizeof(b)) для преобразования числа b в его двоичное представление.
  9. Выводим сообщение bit number %d has value и если check(b,a) возвращает 1, выводим 1, иначе выводим 0.
  10. Используем оператор побитового И (&) для установки бита a в числе b в 1.
  11. Выводим результат в десятичной, шестнадцатеричной системе и его двоичное представление.
  12. Возвращаем 0 в функции main(), чтобы указать, что программа успешно завершилась.

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


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

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

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