Задача: “Энумеративное кодирование”

Пусть дана пара (упорядоченная) \(k\)-битовых чисел \((a, b)\) и известно что \(a < b\). Какое наименьшее целое число бит нужно потратить для передачи пары \((a,b)\)? Реализовать полученный алгоритм на практике.

Можно рассмотреть многомерный случай: дана последовательность чисел: \((a_1, a_2, \ldots ,a_N)\) и известно, что \(a_1 < a_2 < ... < a_N\). Как закодировать такую последовательность?