I have no idea how to achieve this, any help would be greatly appreciated and very useful to me.

I have a loop in some computer code, that loops through every single combination of 7 on bits in a 64 bit integer.

For example,

```
Permutation 1: 00...001111111
Permutation 2: 00...010111111
Permutation 3: 00...011011111
```

etc.

These evaluate to the decimal numbers:

```
Permutation 1: 00...001111111 = 127
Permutation 2: 00...010111111 = 191
Permutation 3: 00...011011111 = 223
```

In total there are:

```
621,216,192
```

Combinations (64 choose 7).

Given any decimal/binary number (it doesn't matter which type), that is guaranteed to be a valid permutation value (we don't need to worry about 128 being passed in for example), how can I calculate which permutation number this is?

IE:

```
whatPermutation(127) = 1;
whatPermutation(191) = 2;
whatPermutation(223) = 3;
```

etc.

Any help would be brilliant, again, I have no idea where to start.