Shift Problem



  • Hallo ich habe einen 32 bit Wert und mochte die oberen 2 bits auf die letzten 2 bits shiften. Kann mir jemand erklären wie das geht?



  • Hast du mal ein paar Lehrwerke gelesen?
    Hast du das Kapitel über Bit-Operatoren gelesen?
    Wahrscheinlich nicht.
    Es gibt einen entsprechenden Operator genau für deinen Fall, nämlich

    >>
    

  • Mod

    Geht sicherlich noch eine ganze Spur eleganter, aber so sieht man wenigstens, wie es funktioniert:

    #include <stdio.h>
    
    int main() {
      unsigned int example_value = 3213213213;
      // 10111111100001011011111000011101
    
      unsigned int mask = (example_value & ((1 << 31) + (1 << 30))) >> 30;
    
      example_value <<= 2;
      example_value += mask;
    
      printf("%u\n", example_value);  
      // 11111110000101101111100001110110
    
    }
    

    Darf ich fragen, wozu das gut sein soll? Das ist eine recht ungwöhnliche Operation. Hausaufgabe?



  • C_Anfänger schrieb:

    Hallo ich habe einen 32 bit Wert und mochte die oberen 2 bits auf die letzten 2 bits shiften. Kann mir jemand erklären wie das geht?

    Sollen die Bits dazwischen erhalten bleiben? Wenn nicht dann einfach: a = a >> 30;


Anmelden zum Antworten