C++ 如何将位从一个变量复制到另一个变量?

C++ 如何将位从一个变量复制到另一个变量?,c++,c,variables,copy,bit-manipulation,C++,C,Variables,Copy,Bit Manipulation,假设我有一个int变量v1: 1100 1010 这个变量int v2: 1001 1110 我需要将v2的最后四位复制到v1的最后四位,这样结果是: 1100 1110 ^ ^ last four bits of v2 | | first four bits of v1 如何在C或C++中做这件事?我读了几篇关于逐位运算的文章,但找不到任何具体的信息。如何 v1 = (v1 & 0xf0) | (v2 & 0xf); 如果“v1”的值有更多的位,则需要使用更大的掩

假设我有一个
int
变量
v1

1100 1010
这个变量
int v2

1001 1110
我需要将
v2
的最后四位复制到
v1
的最后四位,这样结果是:

1100 1110
^    ^ last four bits of v2
|
| first four bits of v1
如何在C或C++中做这件事?我读了几篇关于逐位运算的文章,但找不到任何具体的信息。

如何

v1 = (v1 & 0xf0) | (v2 & 0xf);
如果“v1”的值有更多的位,则需要使用更大的掩码:

v1 = (v1 & 0xfffffff0) | (v2 & 0xf);

按位操作是正确的选择

v1 = (v1 & ~0xf) | (v2 & 0xf);
从你读到的文章中,有没有什么你不明白的地方?

试试:

v1 = (v2 & 0x0F) | (v1 & 0xF0);

在我看来,最具可读性的写作方式是:

v1 &= ~0x0F;       // clear least sig. nibble of v1
v1 |= v2 & 0x0F;   // copy least sig. nibble of v2 into v1