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