假设我有这个int
变量v1
:
1100 1010
而这个变量int v2
:
1001 1110
我需要将最后四位复制到最后v2
四位,v1
以便结果是:
1100 1110
^ ^ last four bits of v2
|
| first four bits of v1
我将如何在 C 或 C++ 中执行此操作?我阅读了几篇有关按位运算的文章,但找不到任何有关此的信息。
假设我有这个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 &= ~0x0F; // clear least sig. nibble of v1
v1 |= v2 & 0x0F; // copy least sig. nibble of v2 into v1
尝试:
v1 = (v2 & 0x0F) | (v1 & 0xF0);