Dies ist eigentlich ziemlich schwierig für Google.Schnell: Set Top 2 Bits von Int
Wie setzen Sie (bitweise oder) die oberen zwei Bits eines 32-Bit-int?
Ich bekomme Compiler Warnungen von allem, was ich versuche.
Dies ist eigentlich ziemlich schwierig für Google.Schnell: Set Top 2 Bits von Int
Wie setzen Sie (bitweise oder) die oberen zwei Bits eines 32-Bit-int?
Ich bekomme Compiler Warnungen von allem, was ich versuche.
Try this:
integerVariable |= 3 << 30;
Es klarer sein können (1 < < 31) verwenden | (1 < < 30) statt (3 < < 30), oder Sie könnten einen Kommentar zum Verhalten hinzufügen. In jedem Fall sollte der Compiler in der Lage sein, den Ausdruck auf einen einzelnen Wert zu optimieren, der gleich int.MinValue >> 1
== int.MinValue/2
ist.
Wenn es eine uint
:
uintVar |= 3u << 30;
integerVariable |= 0xC0000000;
Verwenden 0xC0000000u
für ein unsigned Integer-Variable.
Das Anzeigen der gesamten 32-Bit-Ganzzahl in Hex-Notation ist für mich klarer als das Bitverschiebungen in Mehrdads Antwort. Sie kompilieren sich wahrscheinlich zu demselben Zweck, verwenden Sie also das, was Ihnen klarer erscheint.
Ich mag es. Die Version im Kommentar ist noch deutlicher. Akzeptiert. – Flipster
@FlipScript: Kommentar zur Antwort verschoben. –