как использовать битовое представление для доступа к индексируемой структуре данных

При наличии индексируемой структуры данных, скажем vector = [‘a’, ‘b’, ‘c’] размером n = 3 и int i = 3, я хотел бы преобразовать 3 в его n-битное двоичное представление (011 ) и вернуть элементы [‘b’, ‘c’] вектора. То есть для каждого 1 в двоичном представлении вернуть элемент в этом месте. Но как мне говорить о «местоположении» в двоичном числе?
У меня проблемы с отображением одной идеи в другую. Любая помощь приветствуется.

2

Решение

Используйте битовое смещение, чтобы проверить каждый бит i:

 for(x=0; x<sizeof(int) * 8; x++)
{
if((i & (1<<x)) > 0)
{
// bit at position x is set in i
add vector[i];
}
}

это приведет к

011 & 001  = 001 // true
011 & 010 =  010 // true
011 & 100 =  000 // false
.. etc
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]