Forum: PC-Programmierung C# -Problem (Bitoperation)


von Elektro Gandalf (Gast)


Lesenswert?

Hallo,
ich bin ein C#-Anfänger und habe folgendes Problem:

Wenn ich folgenden Code kompilieren will,
1
byte datum = 0;
2
byte bitNummer = 5;
3
datum |= (1 << bitNummer); // entsprechendes Bit setzen

bekomme ich die fehlermeldung:
Der Typ "int" kann nicht implizit in "byte" konvertiert werden. Es ist 
bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt 
eine Umwandlung.

Vieleich ist jemand der sich in C# besser auskennt als ich, bereit, mir 
zu erkären was ich falchh gemacht habe bzw. wie ich es richtig mache.

von Wolfram (Gast)


Lesenswert?

>>(1 << bitNummer)
schau dir mal an was der ergebnistyp einer shift operation ist, könnte 
das int sein? Wenn ja c# weigert sich einen größeren Typ implizit in 
einen kleineren umzuwandeln, da dabei etwas vorloren gehen könnte. Ich 
sehe keine explizite Konvertierung.

von Bartli (Gast)


Lesenswert?

Das Resultat von "1 << bitNummer" ist vom typ int, da das Literal 1 vom 
Typ int ist. Schreib halt

datum = (byte) (1 << bitNummer);

von Elektro Gandalf (Gast)


Lesenswert?

Super, Danke hat funktioniert!

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.