Próbuję odwrócić bit w bajcie. Używam poniższy kodBit Reversal bitwise
static int BitReversal(int n)
{
int u0 = 0x55555555; // 01010101010101010101010101010101
int u1 = 0x33333333; // 00110011001100110011001100110011
int u2 = 0x0F0F0F0F; // 00001111000011110000111100001111
int u3 = 0x00FF00FF; // 00000000111111110000000011111111
int u4 = 0x0000FFFF;
int x, y, z;
x = n;
y = (x >> 1) & u0;
z = (x & u0) << 1;
x = y | z;
y = (x >> 2) & u1;
z = (x & u1) << 2;
x = y | z;
y = (x >> 4) & u2;
z = (x & u2) << 4;
x = y | z;
y = (x >> 8) & u3;
z = (x & u3) << 8;
x = y | z;
y = (x >> 16) & u4;
z = (x & u4) << 16;
x = y | z;
return x;
}
Może Zwrotnik bit (na komputerze 32-bitowym), ale nie jest to problem, Na przykład wejście jest 10001111101, chcę dostać 10111110001, ale ta metoda odwróci cały bajt, łącznie z pozycją 0. Na wyjściu jest 10111110001000000000000000000000. Czy istnieje metoda odwrócenia rzeczywistej liczby? Nie chcę przekonwertować go na ciąg i rewerser, a następnie przekonwertować ponownie. Czy istnieje czysta metoda matematyczna lub metoda operowania bitem?
Pozdrawiam,
Chociaż rozumiem twoją metodę: nie można skompilować, ponieważ używasz u4 i nie zdefiniowałeś tego w swoim przykładzie. –
Dodaj int u4 = 0x0000FFFF; – user287792
To nie jest powód, po prostu tęsknie. –