Gast-110 hat geschrieben:Ich brauche eigentlich die Bit-Muster - für &- oder |-Vergleiche.
Und die Lücken habe ich nur hier im Forum, um die Lesbarkeit zu erhöhen ... (dachte bis jetzt, dass das eine gute Idee ist.).
Hehehe, ja ist es, wenn klar ist, dass es kein Quellcodezitat ist.
Gast-110 hat geschrieben:Die Eingabe b = (int)0x80000000; funzt jedenfalls nicht

Der Fehler ist dann:
Der Konstantenwert "2174783648" kann nicht in "int" konvertiert werden (verwenden Sie zum Überschreiben die unchecked-Syntax). -
Kennt das jemand?
Das kann in dem Fall nicht klappen, die Fehlermeldung ist vollkommen korrekt. Int geht nämlich nur bis 2174738647 geht. 2174738648 ist zu groß.
Gast-110 hat geschrieben:PS.: unchecked soll die "Überlaufprüfung" umgehen - der int soll doch gar nicht überlaufen !!! - Int sind doch 4 Byte - also 0x80000000 ?!?
Gibt es eine Möglichkeit Bit-Muster gleich so einzugeben wie sie sind ???
0x80000000 ist schon eine gute Möglichkeit. Das ist das 31. Bit (von Null gezählt). Wenn das 31. Bit true ist, dann ist die Zahl negativ. Ein Hex-Wert ist aber positiv und schon sind wir wieder beim Überlauf.
Du brauchst ein unsigned int, was in C# uint genannt wird, wenn ich mich recht entsinne. Die C#-Entwickler sind da nicht so pingelig und nehmen aus Prinzip int und hier hackt's dann.
Ansonsten kannst Du die Bits auch direkt adressieren: 1 << 31 ist das 31. Bit; also das gleiche wie 0x80000000 und genauso positiv, passt also immernoch nicht auf ein Int.
Für Bitmanipulationen nimm uint.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.
Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.