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

Тема в разделе "Общие вопросы по С и С++", создана пользователем sum44, 22 дек 2008.

  1. sum44

    sum44 Member

    Регистрация:
    29 окт 2008
    Сообщения:
    23
    Симпатии:
    0
    кто-нибудь может объяснить что конкретно делает оператор >> в C++.

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

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

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

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

    Пример:
    Код (Text):
    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;  
    }
    }
    меня интересует строчка
    Код (Text):
    n = ((dr>>i)&0x00000001);
    объясните пожалуйста это выражение
     
  2. ZZmiy

    ZZmiy Гость

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

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

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

    Setry Гость

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

Поделиться этой страницей