如何将位从一个变量复制到另一个变量?
假设我有这个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 & ~0xf) | (v2 & 0xf);
您阅读的文章中是否有某些特定的内容?
怎么样
v1 = (v1 & 0xf0) | (v2 & 0xf);
如果“v1”的值有更多位,则需要使用更大的掩码:
v1 = (v1 & 0xfffffff0) | (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