Rotierender bits der eine ganze Zahl in C

Pass eine ganze Zahl 2 zu dieser Funktion und dann wieder ein integer ist 4

x = 2;
x = rotateInt('L', x, 1); 

(Links verschiebt die bits von 1)

Beispiel:
00000010 -> drehen Sie nach Links um 1 -> 00000100

aber wenn ich diese übergeben:

x = rotateInt('R', x, 3); 

wird es wieder 64, 01000000

Hier ist der code, kann jemand den Fehler korrigieren... danke

int rotateInt(char direction, unsigned int x, int y)
{
    unsigned int mask = 0;
    int num = 0, result = 0;
    int i;

    for (i = 0; i < y; i++)
    {     
        if (direction == 'R')
        {
            if ((x & 1) == 1)     
                x = (x ^ 129);
            else    
                x = x >> 1;
        }
        else if (direction == 'L')
        {
            if ((x & 128) == 1)  
                x = (x ^ 129);   
            else
                x = x << 1;
        }
    }
result = (result ^ x);
return result;   
}
  • Betrachten >> und <<, vielleicht. Jetzt schreiben die Funktion 🙂
  • Und Ihre Frage ist? Sie möchten wissen, bitweise Operationen? en.wikipedia.org/wiki/...
  • Sie wirklich brauchen, um zu lernen, zum Einrücken von code. Es macht den code sehr viel besser lesbar. Plus Sie arbeiten schneller und machen weniger Fehler.
InformationsquelleAutor Tim | 2010-10-13
Schreibe einen Kommentar