Laden...

Einzelne Bits aus Variable auslesen

Erstellt von ThyMoe vor 8 Jahren Letzter Beitrag vor 8 Jahren 3.083 Views
T
ThyMoe Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren
Einzelne Bits aus Variable auslesen

Hallo,
ich programmiere gerade eine Oberfläche für eine Steuerung. Von der Steuerung schreibe ich mehrere Statusbits in eine uint Variable und übergebe diese Variable an die Oberfläche. Jetzt möchte ich in meinem C# Programm die Bits einzeln wieder auslesen, finde hierzu aber keinem richtigen Aufruf.
Kann mir bitte jemand sagen wie ich in C# auf einzelne Bits einer Variable zugreifen kann?

C
2.121 Beiträge seit 2010
vor 8 Jahren

Mit einer Zahl die nur das eine Bit gesetzt hat (1, 2, 4, 8....).
Die Zahl mit & auf deine Variable verknüpft ist ungleich 0 wenn das Bit gesetzt ist. Die Zahl mit | auf die Variable verknüpft ergibt die Variable mit gesetztem Bit.

6.911 Beiträge seit 2009
vor 8 Jahren

Hallo ThyMoe,

siehe [Artikel] Bitoperationen in C#

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

2.079 Beiträge seit 2012
vor 8 Jahren

Wenn Bitoperationen nicht unbedingt notwendig sind, wäre es dann nicht einfacher, ein Enum zu verwenden?

Am Ende ist ein Enum-Wert auch nur ein int, byte, oder was Du anderes angibst, nur dass in diesem Fall fest vorgegebene Werte einem Namen zugeordnet sind und sich damit deutlich angenehmer nutzen lassen.
Ganz nebenbei gibt es noch das FlagsAttribut

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

T
ThyMoe Themenstarter:in
2 Beiträge seit 2015
vor 8 Jahren

Hallo gfoidl,

Den Artikel habe ich schon gelesen.

Wenn ich die Variable mit dem & Operator verknüpfe bekomme ich immer die Fehlermeldung: Eine implizite Konvertierung vom Typ 'uint' in 'bool' ist nicht möglich.


                Steuerbit = Steuerwort & 1;

J
251 Beiträge seit 2012
vor 8 Jahren
T
111 Beiträge seit 2005
vor 8 Jahren

Hallo

Ich nehme mal an "Steuerbit" ist ein Boolean? Dann musst Du folgendes schreiben:

 
Steuerbit = ((Steuerwort & 1) == 1);
bool Bit2 = ((Steuerwort & 2) == 2);
usw.

Thomas