我有一个位向量,我想将它的一部分复制到另一个向量(例如,为简单起见,复制到另一个向量的开头)。请注意,所有位可能需要在某个方向上移动(或者更确切地说,旋转),而不仅仅是第一个元素,因为每个字节内的位对齐方式会发生变化。
为清楚起见,假设签名是:
void *memcpy_bits(
char* destination,
char* source,
size_t offset_into_source_in_bits,
size_t num_bits_to_copy);
并且该数据以字节存储,因此没有字节序问题,并且低位首先出现在向量中。我们可以使签名更复杂以适应其他假设,但暂时不要介意。
所以,
- 是否有一些硬件支持这样做(我的意思是在 x86 或 x86_64 CPU 上)?
- 是否有此功能的一些标准/惯用/广泛使用的实现(或类似的东西)?