Я не понял, что значит "инкремент и маска индекса". Т.е. идею я
понял (x = ++x & N). Но middle же может быть какой попало и
диапазоне не 2^N. Да и смысла в оптимизации оператора сравнения
почти, что нет. Одна машинная инструкция на цикл. https://godbolt.org/z/hffYro