2011-01-02 12 views
1

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.

Antwort

6

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; 
+0

Ich mag es. Die Version im Kommentar ist noch deutlicher. Akzeptiert. – Flipster

+0

@FlipScript: Kommentar zur Antwort verschoben. –

1
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.

Verwandte Themen