оператор >> в C++

  • Автор темы sum44
  • Дата начала
S

sum44

кто-нибудь может объяснить что конкретно делает оператор >> в C++.

есть один пример. Там используется api-функция GetLogicalDrives.

описание:
Функция GetLogicalDrives возвращает число-битовую маску в которой храняться все доступные диски.
DWORD GetLogicalDrives(VOID);

Параметры:
Эта функция не имеет параметров.

Возвращаемое значение:
Если функция вызвана правильно, то она возвращает число-битовую маску в которой храняться все доступные диски ( если 0 бит равен 1, то диск "A:" присутствует, и т.д. )
Если функция вызвана не правильно, то она возвращает 0.

Пример:
Код:
int n;
char dd[4];
DWORD dr = GetLogicalDrives();

for( int i = 0; i < 26; i++ )
{
n = ((dr>>i)&0x00000001);
if( n == 1 ) 
{
dd[0] = char(65+i); dd[1] = ':'; dd[2] = '\\'; dd[3] = 0;
cout << "Available disk drives : " << dd << endl;	
}
}
меня интересует строчка
Код:
n = ((dr>>i)&0x00000001);
объясните пожалуйста это выражение
 
Z

ZZmiy

dr >> i - побитовое смещение на i разрядов, т.е. фактически деление на 2 в степени i. После этой операции в полученном числе младший бит хранит информацию о i-том диске
...&0x00000001 - побитовое умножение. фактически в числе обнуляются все биты кроме младшего

В результате получаем в n значение i-того бита в исходном числе.

P.S. смотрим MSDN :: shift operators
 
S

Setry

немного поправлю, вопрос заданный автором относиться к С, а не С++
в С++ этот оператор так же используется для ввода данных
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!