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

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

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

Исправить код. Для заданных чисел выполнить действия, используя логические побитовые операции. Оформить вывод результата каждой операции в виде двоичных и десятичных кодов. Значения, использованные в коде: Число - 115; Выделить - 2 бит; Обнулить - 1,4 бит; Установить- 3 бит; Инвертировать - 7,8 бит. Значения, на которые нужно исправить: Число - 114; Выделить - 5,6 бит; Обнулить - 3,4 бит; Установить- 1,2 бит; Инвертировать - 8 бит.
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4. void binview(int n) // Функция перевода числа в двоичный код
  5. {
  6. int i;
  7. int bin[9];
  8. for(i=0;i<9;i++)
  9. {
  10. if((n>>i)%2==0) bin[8-i]=0;
  11. else bin[8-i]=1;
  12. }
  13. for(i=1;i<9;i++) // Вывод числа в двоичном коде на экран
  14. printf("%d",bin[i]);
  15. return;
  16. }
  17. int main()
  18. {
  19. setlocale(LC_ALL,"Rus"); // Подключение русского языка
  20. int A=115; // Исходное число
  21. int result1,result2,result3,result4;
  22. printf("Запись в сист.счисл. 10 - 2");
  23. printf("\n\nИсходные данные: %d - ",A);
  24. binview(A); // Перевод числа А в двоичный код
  25. result1=A^2; // Операция A xor 2
  26. printf("\nВыдел. 2 бита : %d - ",result1);
  27. binview(result1); // Перевод полученного числа в двоичный код
  28. result2=A&118; // Операция A and 118
  29. printf("\nОбнул.1,4 битов: %d - ",result2);
  30. binview(result2); // Перевод полученного числа в двоичный код
  31. result3=A|4; // Операция A or 4
  32. printf("\nУстан. 3 бита : %d - ",result3);
  33. binview(result3); // Перевод полученного числа в двоичный код
  34. result4=A^192; // Операция A xor 192
  35. printf("\nИнверт.7,8 бит : %d - ",result4);
  36. binview(result4); // Перевод полученного числа в двоичный код
  37. return 0;
  38. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. typedef unsigned char byte;
  4.  
  5. void printBin(byte val) {
  6.     int i;
  7.     for (i = 0; i < 8; ++i, val <<= 1) {
  8.         putc((val & 128) ? '1' : '0', stdout);
  9.     }
  10. }
  11.  
  12. void print(const char text[], byte val) {
  13.     printf("%s: \tdec = %d\tbin = ", text, val);
  14.     printBin(val);
  15.     putc('\n', stdout);
  16. }
  17.  
  18. int main() {
  19.     byte val = 114;
  20.  
  21.     print("src", val);
  22.     print("5,6", val & 48);
  23.     print("3,4", val & 243);
  24.     print("1,2", val | 3);
  25.     print("  8", val ^ 128);
  26.  
  27.     return 0;
  28. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы