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

时间:2013-01-18 02:52:37

标签: 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 ++中执行此操作?我读了一些关于按位操作的文章,但我找不到任何具体的信息。

4 个答案:

答案 0 :(得分:16)

按位操作是正确的选择。

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

你读过的文章中是否有一些你不明白的具体内容?

答案 1 :(得分:5)

怎么样

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

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

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

答案 2 :(得分:2)

尝试:

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

答案 3 :(得分:2)

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

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