[英]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.