我的問題是,有沒有一種方式在C#中有一個起始位的位置,以找到下一個二進制數字的指定值爲0或1的字節中沒有迭代(尋找最高的性能選項)。作爲一個例子,如果你有10011並從第一位開始(最右邊)並搜索第一個0,它將是從右到左的第三個地方。如果你在第三名開始並想找到下一個,那麼它將位於第五名(最左邊)。以二進制跳轉段
感謝您的任何幫助,並隨時讓我知道,如果我需要進一步提供任何東西。
編輯:這是我目前的代碼。
private int GetBinarySegment(uint uiValue, int iStart, int iMaxBits, byte bValue)
{
int r = 0; uiValue >>= iStart;
if (uiValue == 0) return iMaxBits - iStart;
while ((uiValue & 1) == bValue) { uiValue >>= 1; r++; }
return r;
}
@STLDeveloper只有各種形式的迭代。我剛剛開始移動,直到最右邊的位發生變化,並記錄位移#直到位位置0改變。如果我需要指定一個「開始」位置,我會在運行循環之前移動該量。因爲它都是二元的,所以我希望有一個更優雅的選擇。 – Mythics
你對結果做什麼?有沒有可能直接用掩碼錶示這個位或是否真的必須是索引? – harold
@harold我想要獲得信息,我應該更願意給它。我正在研究一種做多維填充的方法來識別遊戲的標量場/體素地形環境中的所有固體物體。我相信有一些類似的技巧,我可以比典型的迭代方法填充更好地得到更好的結果。 – Mythics