从“int”向量到位序列

From a vector of `int` to a sequence of bits

y 是一个无符号整数,表示位列表。 v 是一个仅包含 0 和 1 的整数向量。我想以有效的方式将 v 的值设置为 y。我愿意

for (int i ; i<v.size() ; ++i)
{
  y ^= (-v[i] ^ y) & (1 << i);
}

这是有效的还是有更好的方法?

"I asked the question mainly to improve my understanding of bitwise manipulations" - 如果是这样的话:

您正在使用两个 ^ [xor] 操作,一个 & [union] 操作和一个 << [left shift] op,你可以通过使用一个 << [left shift] op 和一个 | [相交] 操作。

像这样:

for (int i; i < v.size(); ++i)
{
    y <<= 1;
    y |= v[i];
}