L'obiettivo è prendere uno spazio binario, diciamo 64 bit, e rendere certe parti "valide" e alcune parti "non valide", quindi incrementare, partendo da 0, attraverso quello spazio, evitando le aree non valide.
Lo spazio è reso "non valido" applicando un numero arbitrario di regole arbitrarie. Ad esempio "se i bit 2 e 49 sono impostati, quel numero non è valido", ecc.
Lo spazio non influenzato dalle regole è considerato "valido".
Il modo semplice per farlo è semplicemente applicare tutte le regole ogni volta che si incrementa. Ma questo non è realistico per uno spazio a 64 bit con anche poche regole, ci vuole per sempre. Per spazi di bit più grandi e / o molte regole complesse, lo stesso problema.
Quindi è necessario un metodo molto più efficiente. Qualcosa che richiede pochissime istruzioni e il risultato finale è essenzialmente solo incrementando i numeri che sono nello spazio valido.
Immagino che questo sia già stato scoperto in una tesi da qualche parte ed è probabilmente usato ogni giorno nei file system o qualcosa di comune.