从一个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);
}
这是有效的还是有更好的方法?
"我问这个问题主要是为了提高我对按位操作的理解" -如果是这样的话:
您正在使用两个^ [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];
}
相关文章:
- 包装一个对象并假装它是一个 int
- 无法一次从二进制文件中读取一个 int
- 当我输入一个字母时,cin 输入(输入是一个 int),而不是打印错误一次,它打印正确一次,然后在循环的其余部分打印 i
- 为什么我不能使用与"常量字符*"相同的"const int*"创建一个 int 数组?
- 如何将私有整数从A类传递到C 类B类的另一个INT变量
- C :用sizeof()operator在for for loop中增加一个int变量,只能工作一次
- 结构C++可以用 0 初始化,但不能用另一个 int 初始化
- 将一个int []转换为字符串,而无需明确的c 循环
- 如何通过另一个int变量递增int变量
- C++根据输入返回一个字符串或一个int
- 如何在另一个结构 arrya 中的一个结构中初始化一个 int 数组
- 两个 UShorts 之间的操作在 VC2015 中给出了一个 int
- turbo 如何在 C++ 的系统() 函数中放入一个 int varriable
- 无限输入C 计算器要结束计算,需要再进行一个INT
- 带有两个INT列表的结构将减少为一个INT
- 在c#中构建一个int数组,每个int调用c++或在c++中构建并传递给c#
- 对于具有 3 个无符号字符和一个 int 的结构来说,对于unordered_map来说,什么是好的哈希函数?
- 当我创建一个int指针并实例化一个数组时,数组在内存中发生了什么
- 如何在C 中的结构内设置一个int数组
- 为什么在我的测试程序中,从字符缓冲区读取一个int时,"std::copy"5x(!)比"