int (int index) { index++; int ret = index; int bindex = index / 32; int dindex = index % 32; while (bindex < data.length) { int block = data[bindex]; if (block != 0) { block >>>= dindex; while (dindex < 32) { if ((block & 1) != 0) { return ret; } block >>>= 1; dindex++; ret++; } } else { ret += (32 - dindex); } dindex = 0; bindex++; } return -1; }