Для заданных чисел выполнить действия, используя логические побитовые операции - C (СИ)

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

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

Исправить код. Для заданных чисел выполнить действия, используя логические побитовые операции. Оформить вывод результата каждой операции в виде двоичных и десятичных кодов. Значения, использованные в коде: Число - 115; Выделить - 2 бит; Обнулить - 1,4 бит; Установить- 3 бит; Инвертировать - 7,8 бит. Значения, на которые нужно исправить: Число - 114; Выделить - 5,6 бит; Обнулить - 3,4 бит; Установить- 1,2 бит; Инвертировать - 8 бит.
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
void binview(int n) // Функция перевода числа в двоичный код
{
    int i;
    int bin[9];
    for(i=0;i<9;i++)
    {
        if((n>>i)%2==0) bin[8-i]=0;
        else bin[8-i]=1;
    }
    for(i=1;i<9;i++) // Вывод числа в двоичном коде на экран
    printf("%d",bin[i]);
    return;
}
int main()
{
    setlocale(LC_ALL,"Rus"); // Подключение русского языка
    int A=115; // Исходное число
    int result1,result2,result3,result4; 
    printf("Запись в сист.счисл. 10  -    2");
    printf("\n\nИсходные данные:     %d - ",A);
    binview(A); // Перевод числа А в двоичный код
    result1=A^2; // Операция A xor 2
    printf("\nВыдел. 2 бита  :     %d - ",result1);
    binview(result1); // Перевод полученного числа в двоичный код
    result2=A&118; // Операция A and 118
    printf("\nОбнул.1,4 битов:     %d - ",result2);
    binview(result2); // Перевод полученного числа в двоичный код
    result3=A|4; // Операция A or 4
    printf("\nУстан. 3 бита  :     %d - ",result3);
    binview(result3); // Перевод полученного числа в двоичный код
    result4=A^192; // Операция A xor 192
    printf("\nИнверт.7,8 бит :     %d - ",result4);
    binview(result4); // Перевод полученного числа в двоичный код
 
    return 0;
}

Решение задачи: «Для заданных чисел выполнить действия, используя логические побитовые операции»

textual
Листинг программы
#include <stdio.h>
 
typedef unsigned char byte;
 
void printBin(byte val) {
    int i;
    for (i = 0; i < 8; ++i, val <<= 1) {
        putc((val & 128) ? '1' : '0', stdout);
    }
}
 
void print(const char text[], byte val) {
    printf("%s: \tdec = %d\tbin = ", text, val);
    printBin(val);
    putc('\n', stdout);
}
 
int main() {
    byte val = 114;
 
    print("src", val);
    print("5,6", val & 48);
    print("3,4", val & 243);
    print("1,2", val | 3);
    print("  8", val ^ 128);
 
    return 0;
}

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

  1. Программа выполняет действия с числами, используя логические побитовые операции.
  2. Тип данных переменной val — byte, что означает, что она может содержать значения от 0 до 255.
  3. Функция printBin() выводит двоичное представление числа val.
  4. Цикл в функции printBin() выполняет сдвиг числа val влево на 1 бит и проверяет, является ли самый старший бит числа 1.
  5. Если самый старший бит числа 1, то выводится символ '1', иначе выводится символ '0'.
  6. Функция print() выводит текст и двоичное представление числа val.
  7. В функции main() создается переменная val со значением 114.
  8. Вызывается функция print() для вывода текста src и значения переменной val.
  9. Вызывается функция print() для вывода текста 5,6 и значения переменной val после применения побитового оператора AND с числом 48.
  10. Вызывается функция print() для вывода текста 3,4 и значения переменной val после применения побитового оператора AND с числом 243.
  11. Вызывается функция print() для вывода текста 1,2 и значения переменной val после применения побитового оператора OR с числом 3.
  12. Вызывается функция print() для вывода текста  8 и значения переменной val после применения побитового оператора XOR с числом 128.
  13. Значение переменной val не изменяется в функции main().
  14. Значение переменной val не изменяется в функции print().
  15. Значение переменной val не изменяется в функции printBin().
  16. Значение переменной val не изменяется в функции main().
  17. Значение переменной val не изменяется в функции main().
  18. Значение переменной val не изменяется в функции main().
  19. Значение переменной val не изменяется в функции main().
  20. Значение переменной val не изменяется в функции main().

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


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

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

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