从一个int型向量到一个位序列

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

本文关键字:一个 int 向量      更新时间:2023-10-16

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

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

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

"我问这个问题主要是为了提高我对按位操作的理解" -如果是这样的话:

您正在使用两个^ [xor] ops,一个& [union] op和一个<<</em> [left shift] op,您可以通过使用一个<<</em> [left shift] op和一个| [intersect] op来实现相同的效果。

像这样:

for (int i; i < v.size(); ++i)
{
    y <<= 1;
    y |= v[i];
}
相关文章: