Для заданных чисел выполнить действия, используя логические побитовые операции - 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; }
Объяснение кода листинга программы
- Программа выполняет действия с числами, используя логические побитовые операции.
- Тип данных переменной
val
— byte, что означает, что она может содержать значения от 0 до 255. - Функция printBin() выводит двоичное представление числа
val
. - Цикл в функции printBin() выполняет сдвиг числа
val
влево на 1 бит и проверяет, является ли самый старший бит числа 1. - Если самый старший бит числа 1, то выводится символ '1', иначе выводится символ '0'.
- Функция print() выводит текст и двоичное представление числа
val
. - В функции main() создается переменная
val
со значением 114. - Вызывается функция print() для вывода текста
src
и значения переменнойval
. - Вызывается функция print() для вывода текста
5,6
и значения переменнойval
после применения побитового оператора AND с числом 48. - Вызывается функция print() для вывода текста
3,4
и значения переменнойval
после применения побитового оператора AND с числом 243. - Вызывается функция print() для вывода текста
1,2
и значения переменнойval
после применения побитового оператора OR с числом 3. - Вызывается функция print() для вывода текста
8
и значения переменнойval
после применения побитового оператора XOR с числом 128. - Значение переменной
val
не изменяется в функции main(). - Значение переменной
val
не изменяется в функции print(). - Значение переменной
val
не изменяется в функции printBin(). - Значение переменной
val
не изменяется в функции main(). - Значение переменной
val
не изменяется в функции main(). - Значение переменной
val
не изменяется в функции main(). - Значение переменной
val
не изменяется в функции main(). - Значение переменной
val
не изменяется в функции main().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д