2013-01-18 9 views
5

だが、私はこのint変数v1を持っているとしましょう:ある変数から別の変数にビットをコピーする方法は?

1100 1010 

そして、この変数int v2

1001 1110 

私はそのようv1の最後の4ビットにv2から最後の4ビットをコピーする必要があります結果は:

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 
関連する問題