比方說,我有這個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 = (v2 & 0x0F) | (v1 & 0xF0);
最可讀的方式寫出來,在我看來:
v1 &= ~0x0F; // clear least sig. nibble of v1
v1 |= v2 & 0x0F; // copy least sig. nibble of v2 into v1