是否可以使用按位运算来限制int值(设置范围)?

时间:2011-04-29 06:46:55

标签: c# .net bit-manipulation

我需要让我的整数计数器具有1到6的值,包括时尚。即从1开始,我数到6并返回1.我想知道是否可以使用某种按位逻辑来实现。当然,如果声明如下,这是微不足道的,但我想知道一个班轮:)

int counter = 1;

for...
    do something
    if (counter++ == 7) counter = 1;

增加: 这就是我想要1个衬垫的原因:

byte output = (byte)((inputByte & 0xF8) | counter++);

1 个答案:

答案 0 :(得分:3)

使用模运算符。

do something;    
++counter; counter %= 7; ++counter;

要使用真实的按位运算,你的模数必须是2的幂,而不是这里的情况。

PS:如果您的计数器从0开始而不是1,那么您将不需要第二个++counter,并会写出如下内容:

for (int counter = 0; (somecondition); ++counter, counter %= 7)
{
    do something;
}

PPS:请注意,通常if执行速度比模数更快。