C++直接将特定位保存到向量<bool>中,而不需要移位位并使用掩码来确定其值?

问题描述 投票:0回答:1

假设我有一个

long int x = 123;

我定义了一个

vector<bool> bits(64);

我想访问

x
中的第 4 位并将其存储到
bits
向量中:

bits[3]=get_bit(x,3);

如何实现

get_bit
功能无需执行耗时的操作,例如将
x
复制到内存中,然后将第4位移到开头,然后应用掩码来获取值,然后将其存储在不必要的大4-字节对象,然后将其分配给
vector<bool>
只是为了转换回单个位。

有什么想法如何从一个地方抓取位值并将其写入另一个地方吗?

c++ vector bit-manipulation
1个回答
0
投票

我不想说出显而易见的事情,但是:

bits[3] = x & (1 << 3);
© www.soinside.com 2019 - 2024. All rights reserved.