Для заданных чисел выполнить действия, используя логические побитовые операции - 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().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д