Использование _BitScanReverse64

#c

#c

Вопрос:

Как использовать

 _BitScanReverse64(unsigned long * Index,  unsigned __int64 Mask)
  

для того, чтобы найти первую позицию, равную 1 в integer?

Комментарии:

1. чего конкретно вы не понимаете в документах и примере для этой функции в msdn

2. @Mat Я не понимаю, как должен быть установлен параметр маски (в какое значение)

3. @Oli спасибо, я бы хотел, чтобы они могли назвать это несколько менее запутанным.

Ответ №1:

Попробуйте это:

    unsigned __int64 mask = some_value;
   unsigned long index;
   unsigned char isNonzero = _BitScanReverse64(amp;index, mask);
   if (!isNonzero) {
      // index variable contains index of the first bit set to 1
   }
  

Комментарии:

1. Да, вы получите позицию первого бита, равную 1 в переменной mask.