2015-07-23 3 views
1

У меня есть значение int32. Мне нужно получить позицию более высокого бита, которая используется для представления текущего значения.Получить более высокую разрядную позицию

В качестве примера:

int value = 155; 

В двоичной форме будет 10011011 Так выше бит используется в позиции 8.

Есть ли по умолчанию или общие методы для этого?

ответ

1

GetBit каждый бит может Chech истина (1) или ложь (0) и 32-разрядный индекс поиска петли первого истинного бита.

public static class ByteExtensions 
{ 
    public static bool GetBit(this byte byteValue, int bitIndex) 
    { 
     return (byteValue & (1 << bitIndex - 1)) != 0; 
    } 
    public static int GetMaxBitIndex(this byte byteValue) 
    { 
     for (int i = 32; i > -1; i--) 
     { 
      if (byteValue.GetBit(i)) 
       return i; 
     } 
     return -1; 
    } 
} 
Смежные вопросы