y
是一个无符号整数,表示一个位列表。 v
是仅包含0和1的整数向量。我希望以有效的方式将v
的值设置为y
。我会做的
for (int i ; i<v.size() ; ++i)
{
y ^= (-v[i] ^ y) & (1 << i);
}
这有效还是有更好的方法呢?
答案 0 :(得分:0)
&#34;我问这个问题主要是为了提高我对按位操作的理解&#34; - 如果是这样的话:
你正在使用两个 ^ [xor] ops,一个&amp; [union] op和一个&lt;&lt; [left shift ] op,你可以通过使用一个&lt;&lt; [left shift] op和一个 | [intersect] op来实现相同的目的。
这样的事情:
for (int i; i < v.size(); ++i)
{
y <<= 1;
y |= v[i];
}