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