2015-03-10 4 views
0

Я хочу создать битовую маску и смещение битмаски смещением и длиной.Бит-маска и -выполнение смещения и длины

Например: offset = 8 и length = 4

битовая маска должна быть: 0xF00 = 3840 в десятичной системе (1111.0000.0000)

и bitoffset должно быть: 0x100 = 256 в десятичном

Я пробовал следующее: но это не так:

ulong mask = 0; 
for (int i = 0; i < offset; i++) 
{ 
    mask += (1 << 1) | 0; 
} 

Как я могу это сделать?

+0

Смещение определяет, когда первый '1' начинается и длина представляет собой число' 1' до '0' или что? – Sinatr

ответ

4

Одним из способов может быть что-то вроде:

ulong mask = ((1 << length) - 1) << offset; 

Я не ясно, почему вы даже хотите значение bitoffset, но это должно быть просто вопрос перехода вашей offset значения, не так ли? Например:

ulong bitoffset = 1 << offset; 
Смежные вопросы