Forum: PC-Programmierung c#.net Bitmanipulation in einem byte


von Slowflyer (Gast)


Lesenswert?

Hallo,

ich habe nunmehr mal versucht in c# einzelne Bits in einem Byte zu 
manipulieren, wie ich es bisher in c/c++ gewohnt war.
1
        byte bla;
2
        const byte eins = 1;
3
        const byte zwei = 2;
4
5
//setzen
6
7
bla |= (1 << eins);
8
9
//löschen
10
11
bla &= ~(1 << eins);

Ergebnis ist: Setzen wird ohne weiteres kompiliert, das Löschen jedoch 
nicht. Fehlermeldung des Compilers ist: Der Konstantenwert "-3" kann 
nicht in "byte" konvertiert werden.

??? byte ist doch unsigned oder? Was hat der nur für ein Problem? Wie 
kann man einzelne Bits setzen und löschen? Mir Fällt da gerade keine 
Lösung ein. Wär nett wenn mich jemand aufklären könnte, wie das in C# 
funktioniert.

Gruß, der Langsame

von Marcus (Gast)


Lesenswert?

Mit eínem Typecast vor "~()".
bla &= (byte)(~(1 << eins));


Marcus

von Slowflyer (Gast)


Lesenswert?

Das funktioniert leider auch nicht.

Der gleiche Fehler: Der Konstantenwert "-3" kann nicht in "byte" 
konvertiert werden. (Verwenden Sie zum Überschreiben die 
unchecked-Syntax.)

Argh!!!

von Slowflyer (Gast)


Lesenswert?

Hmm...

Habs gefunden dank Beitrag "C# -Problem (Bitoperation)"

Wer suchen klann ist klar im Vorteil.

Mit
1
bla &= (~(1 << eins)&0xff);

funktionierts.

Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.