public static int NextSetBit(this BitArray bitArray, int index) { while (index < bitArray.Length) { // if index bit is set, return it // otherwise check next index bit if (bitArray.Get(index)) return index; else index++; } // if no bits are set at or after index, return -1 return -1; }