2013-01-18 14 views
5

Powiedzmy mam ten int zmienna v1:Jak skopiować bity z jednej zmiennej do drugiej?

1100 1010 

i to zmienna int v2:

1001 1110 

muszę skopiować cztery ostatnie bity od v2 do ostatnich czterech bitów v1 tak, że Wynik:

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

Jak bym robisz to w C lub C++? Czytałem kilka artykułów o operacjach bitowych, ale nie mogłem znaleźć żadnych konkretnych informacji na ten temat.

Odpowiedz

16

operacje bitowe były właściwe rzeczy do poszukiwania .

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

Czy z przeczytanych artykułów jest coś, czego nie rozumiesz?

5

Jak o

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

Jeżeli wartość „v1” ma więcej bitów, którą chcesz użyć większej maskę:

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

Spróbuj:

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

najbardziej czytelny sposób, żeby to napisać, moim zdaniem:

v1 &= ~0x0F;  // clear least sig. nibble of v1 
v1 |= v2 & 0x0F; // copy least sig. nibble of v2 into v1 
Powiązane problemy