Bir baytta biraz ters çevirme yapmaya çalışıyorum. Ben O (32 bit makinede) biraz reversler olabilirBit Bit çevirme
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;
}
aşağıdaki kodu kullanabilirsiniz, ancak bir sorun, Örneğin, giriş ben 10111110001 almak istiyorum, 10001111101, ancak bu yöntem yoktur 0'ların başı da dahil olmak üzere tüm baytı tersine çevirir. Çıktı 10111110001000000000000000000000'dir. Sadece gerçek sayıyı tersine çevirmek için herhangi bir yöntem var mı? Onu string ve reverser'a dönüştürmek istemiyorum, sonra tekrar dönüştürüyorum. Herhangi bir saf matematik yöntemi veya bit işlemi yöntemi var mı?
Saygılarımızla,
Yönteminizi anladığım halde, u4'ü kullandığınızdan ve örneğinizde tanımlamamış olmanız nedeniyle derleme yapamamaktadır. –
int u4 = 0x0000FFFF; – user287792
Nedeni bu değil, sadece bunu özlüyorum. –