繁体   English   中英

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

[英]Is it possible to restrict int value (set a range) using bitwise operations?

我需要让我的 integer 计数器的值在 1 到 6 之间(包括 1 到 6),包括环绕时尚。 即从1开始,我数到6,go回到1。我想知道是否可以使用某种按位逻辑来实现。 当然,下面的 if 语句很简单,但我想知道一个班轮:)

int counter = 1;

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

加法:这就是我想要 1 班轮的原因:

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

使用模运算符。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM