快速:设置int的前2位

时间:2011-01-02 04:38:44

标签: c# bit-manipulation int

这实际上对谷歌来说相当棘手。

如何设置(按位或)32位int的前两位?

我从我尝试的所有内容中收到编译器警告。

2 个答案:

答案 0 :(得分:6)

试试这个:

integerVariable |= 3 << 30; 

使用(1 <&lt; 31)|可能更清楚(1 <&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 30)代替(3&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 30),或者您可以添加关于该行为在任何情况下,编译器都应该能够将表达式优化为单个值,该值等于int.MinValue >> 1 == int.MinValue / 2


如果是uint

uintVar |= 3u << 30;

答案 1 :(得分:1)

integerVariable |= 0xC0000000; 

使用0xC0000000u表示无符号整数变量。

以十六进制表示法显示整个32位整数对我来说比Mehrdad的答案中的位移更清晰。但是,它们可能会编译成相同的东西,所以请使用看起来更清晰的东西。