簡體   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