2013-01-18 61 views
5

比方說,我有這個int變量v1如何將位從一個變量複製到另一個變量?

1100 1010 

而且這個變量int v2

1001 1110 

我需要在最後四位從v2複製到最後四位的v1從而使結果是:

1100 1110 
^ ^last four bits of v2 
| 
| first four bits of v1 

我將如何在C或C++中做這件事?我閱讀了一些關於按位操作的文章,但是我找不到任何有關此信息的具體信息。

回答

16

位運算是尋找正確的事。

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

是否有某些具體的內容,您從您閱讀的文章中無法理解?

5

如何

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

如果「V1」的價值有更多的位,你想使用一個更大的面膜:

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

嘗試:

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

最可讀的方式寫出來,在我看來:

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