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>>
-
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;