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

lau*_*ent 5 c c++ variables bit-manipulation copy

假设我有这个int变量v1:

1100 1010
Run Code Online (Sandbox Code Playgroud)

而这个变量int v2:

1001 1110
Run Code Online (Sandbox Code Playgroud)

我需要将最后四位复制v2到最后四位,v1以便结果如下:

1100 1110
^    ^ last four bits of v2
|
| first four bits of v1
Run Code Online (Sandbox Code Playgroud)

我怎样才能在C或C++中做到这一点?我读了一些关于按位操作的文章,但我找不到任何具体的信息.

Car*_*rum 16

按位操作是正确的选择.

v1 = (v1 & ~0xf) | (v2 & 0xf);
Run Code Online (Sandbox Code Playgroud)

您阅读的文章中是否有某些特定的内容?


Poi*_*nty 5

怎么样

v1 = (v1 & 0xf0) | (v2 & 0xf);
Run Code Online (Sandbox Code Playgroud)

如果"v1"的值有更多位,则需要使用更大的掩码:

v1 = (v1 & 0xfffffff0) | (v2 & 0xf);
Run Code Online (Sandbox Code Playgroud)