Что выполняет эта строка (data & 0x08)/0x08 - C (СИ)
Формулировка задачи:
Есть программка для считывания состояния регистра статуса, в которой есть строка "(data & 0x08)/0x08", смысл я понимаю она считывает состояние одного из регистров, но почему записывается именно в такой форме, где можно почитать про форму записи обращения к регистрам?
Вот код всей программы:
#include"stdio.h"
#include"conio.h"
#include"dos.h"
#define PORT 0x378
void main()
{
int data;
clrscr();
while(!kbhit())
{
data=inportb(PORT+1);
gotoxy(3,10);
printf("Data available in status register: %3d (decimal), %3X (hex)\n", data, data);
printf("\n Pin 15: %d",(data & 0x08)/0x08);
printf("\n Pin 13: %d",(data & 0x10)/0x10);
printf("\n Pin 12: %d",(data & 0x20)/0x20);
printf("\n Pin 11: %d",(data & 0x80)/0x80);
printf("\n Pin 10: %d",(data & 0x40)/0x40);
delay(10);
}
}Решение задачи: «Что выполняет эта строка (data & 0x08)/0x08»
textual
Листинг программы
data & 0b00001000
Объяснение кода листинга программы
- В данном коде используется оператор
&(битовое И) для выполнения побитового И между двумя числами. data- это переменная, которая содержит некоторое значение.- 0b00001000 - это двоичное число, которое представляет собой 16 в десятичной системе счисления.
- Результатом операции
data & 0b00001000будет также двоичное число. - Для лучшего понимания результата, можно преобразовать полученное двоичное число в десятичную систему счисления.
- При преобразовании числа в десятичную систему счисления, каждая цифра в двоичном числе соответствует соответствующей цифре в десятичном числе.
- В данном случае, первые 4 цифры двоичного числа соответствуют первым 4 цифрам десятичного числа.
- Последние 4 цифры двоичного числа соответствуют последним 4 цифрам десятичного числа.
- Поэтому, результат операции
data & 0b00001000будет равен 16 в десятичной системе счисления.