При аппаратной реализации сочетаний или при программировании на языке ассемблера важно иметь возможность обработки записей сочетаний в двоичном формате. В этом случае любое сочетание из n элементов по m элементов следует задавать в форме n-разрядного двоичного числа (Bn,…Bj,…B1), где m единичных разрядов обозначают элементы сочетания, а остальные (n-m) разрядов имеют нулевые значения. Очевидно, что при таком формате записи различные сочетания должны отличаться расположением единичных разрядов и существует всего C(n,m) способов расположить m единиц или (n-m) нулей в n-разрядном двоичном наборе. Например, в следующей таблице перечислены все 6 таких бинарных сочетаний, которые обеспечивают запись 4-х разрядными двоичными числами всех сочетаний из n=4 элементов произвольного множества {E1, E2, E3, E4} по m=2 элемента:
Таблица 1    
(0011)1(0101)2(1001)3(0110)4(1010)5(1100)6
{E1, E2}{E1, E3}{E1, E4}{E2, E3}{E2, E4}{E3, E4}

В общем случае задача перечисления таких бинарных сочетаний сводится к систематическому перебору всех n-разрядных двоичных наборов с различным расположением m единичных и (n-m) нулевых разрядов. В наиболее простой форме такой перебор реализуют различные методы транспозиции смежных разрядов со сдвигом (транспозитивно-сдвиговые алгоритмы). Это итерационные алгоритмы, а их названия отражают характер операций, выполняемых на каждом шаге. Итерационные процедуры транспозитивно-сдвиговых алгоритмов формируют последовательности бинарных сочетаний, которые начинаются двоичным набором, где все единицы сосредоточены в младших разрядах (справа), и завершаются, когда все единицы будут находиться в старших разрядах (слева):
ПTS = < (0 …01…1)1n-m m ; … (1…10 …0)C(n,m)m n-m >.
Совпадая по начальным и конечным сочетаниям, эти последовательности отличаются порядком перечисления промежуточных двоичных наборов. Однако во всех случаях каждое следующее бинарное сочетание формируется по предыдущему в результате выполнения соответствующих операций транспозиции и сдвига. При этом различные транспозитивно-сдвиговые алгоритмы отличаются способом выбора пары разрядов для транспозиции и группы разрядов для сдвига. Эта специфика рассмотрена ниже для алгоритмов транспозиции с левым и правым сдвигом.
В алгоритме транспозиции с левым сдвигом на каждом шаге очередное бинарное сочетание получается из текущего заменой крайней левой пары разрядов 01 на 10 (транспозиция) и смещением группы лидирующих единичных разрядов, если таковые имеются, вплотную к паре 10, полученной после транспозиции (сдвиг). Если при этом в текущем бинарном сочетании нет единиц в старших разрядах, то сдвиг не производится, даже когда лидирующая единица получается после транспозиции на данном шаге. Сдвиг также не производится, когда в старших разрядах перед парой 10, полученной после транспозиции нет нулей. Рассмотренные действия иллюстрирует следующий пример выполнения двух последовательных итераций данного алгоритма, где на одной итерации (15) производится только транспозиция (T'), а на другой итерации (16) транспозицию дополняет сдвиг (T"+S"):
транспозиция транспозиция сдвиг … (10͟1010)15 −T'−> (1100͟10)16 −T"−> (1͟10100) −> S"−> (011100)17>< >< >>> итерация 15 итерация 16
В алгоритме транспозиции с правым сдвигом на каждом шаге выполняются концептуально аналогичные действия. Только транспозиция обеспечивает замену крайней правой разрядов 01 на 10 (вместо крайней левой как было в рассмотренном выше алгоритме), а затем производится сдвиг всех единиц справа от нее в младшие разряды. Как и раньше сдвиг производится только при наличии единиц, которые могут быть смещены вправо. Все эти действия иллюстрирует следующий пример выполнения двух последовательных итераций данного алгоритма, где на итерации 3 производится только транспозиция (T'), а на итерации 4 транспозицию дополняет сдвиг (T"+S"):
транспозиция транспозиция сдвиг … (00110͟1)15 −T'−> (00͟1110)4 −T"−> (0101͟10) −> S"−> (010011)5>< >< >>> итерация 3 итерация 4
Следует отметить, что итерации обоих алгоритмов можно записать в аддитивной форме, если интерпретировать бинарные сочетания как целые числа, записанные в системе счисления по основанию 2. В частности, для алгоритма транспозиции с правым сдвигом каждое очередное бинарное сочетание B' можно всегда получить из текущего сочетания B, выполнив операции сложения целых чисел по следующей аддитивной формуле:
B' = B + 2N + 2E−1 − 1.
В этой аддитивной формуле показатели степеней двоек N и E обозначают, соответственно, число нулевых младших разрядов текущего бинарного сочетания и количество единиц, стоящих подряд слева от них. Например, для четвертого бинарного сочетания B=(001110) из n=6 разрядов N=1 и E=3. Следовательно, вычисление очередного бинарного сочетания B' по аддитивной формуле на итерации 5 даст следующий результат, эквивалентный выполнению операций транспозиции и сдвига:
(010011)5 = (001110)4 + 21 + 23−1− 1 = 0011102 + 0001002 + 0000102 − 0000012
Для алгоритма транспозиции с левым сдвигом аддитивная формула вычисления очередного бинарного сочетания B' по текущему бинарному сочетанию B имеет следующий вид:
B' = B + (2n−E − 2n) + (2n−N − 2n−N−E+1) + 2n−N−E−1
В этой формуле E обозначает число лидирующих единиц, после которых стоят N нулей подряд в векторе текущего бинарного сочетания B из n двоичных разрядов. При этом степени двоек в скобках обеспечивают операцию сдвига лидирующих единиц, так что первая скобка стирает, а вторая скобка восстанавливает их в том же количестве, но на N разрядов правее. Последняя степень двойки в аддитивной формуле обеспечивает выполнение операции транспозиции для старшей пары разрядов 01.
Например, для бинарного сочетания B=(110010) из n=6 разрядов E=N=2. Следовательно, очередное бинарное сочетание B'=(011100) может быть получено из него по рассмотренной аддитивной формуле следующим образом:
(011100) = (110010) + (24 − 26)+ (24 − 23) + 21 .
Для сравнительного анализа рассмотренных алгоритмов транспозиции с левым и правым сдвигом целесообразно сопоставить последовательности бинарных сочетаний, которые они порождают на своих итерациях. В следующей таблице показаны две такие последовательности бинарных сочетаний из n=4 элементов по 2, которые получены, соответственно, алгоритмами с левым (TSL) и правым (TSR) сдвигом:
Таблица 2    
TSL: (0011)1(0101)2(1001)3(0110)4(1010)5(1100)6
TSR: (0011)1(0101)2(0110)3(1001)4(1010)5(1100)6

Сравнивая эти 2 последовательности, можно заметить, что они являются обратно-зеркальными. Это означает, что любые два бинарных сочетания, которые расположены в них на одинаковом расстоянии от взаимно-противоположных концов своих последовательностей, являются зеркальным отражением друг друга, то есть совпадают при изменении на обратную индексации разрядов в любом из них. Например, второе по порядку от начала последовательности TSL бинарное сочетание (0101) является зеркальным отражением бинарного сочетания (1010), которое находится на втором месте от конца последовательности TSR. Эти два зеркально отраженных бинарных сочетания для наглядности выделены подчеркиванием в рассмотренных последовательностях TSL и TSR. В общем случае любое бинарное сочетание с номером i одной последовательности является зеркальным отображение бинарного сочетания с номером (n-i+1) другой последовательности. Такое соотношение является следствием симметричного характера операций транспозиции и сдвига в двух рассмотренных алгоритмах перечисления бинарных сочетаний.
Следует отметить, что двоичный формат можно применить также для записи сочетаний с повторениями элементов. Для этого нужно установить взаимно однозначное соответствие между сочетаниями с повторениями и бинарными сочетаниями, которые конструируются следующим образом. Пусть имеется произвольное сочетание с повторениями, которое получено выбором m необязательно различных элементов из n элементов образующего множества. Для установления искомого соответствие нужно сначала присоединить к сочетанию все элементы образующего множества cat, а затем отсортировать полученную конкатенацию (sort), чтобы все одинаковые элементы оказались рядом. В результате получится последовательность из (n+m) элементов, где n групп одинаковых элементов. Между элементами в ней будет всего (n+m-1) промежутков, среди которых будет (n-1) промежутков между группами одинаковых элементов и m промежутков между элементами внутри групп. Для наглядности в указанных промежутках можно разместить символы '|' и '-', соответственно. Если теперь сопоставить 1 промежуткам между группами (|) и 0 всем остальным промежуткам (-), то получится бинарное сочетание. Его образует двоичный набор из (n+m-1) разрядов, где (n-1) единичных и m нулевых разрядов, расположение которых однозначно соответствует исходному сочетанию с повторениями из элементов n по m. Рассмотренную технику преобразований иллюстрирует следующий пример построения бинарного сочетания (1001101) по сочетанию с повторениями (BBD), элементы которого выбраны из образующего множества латинских букв {A,B,C,D,E}:
(BBD) + {ABCDE} --> A | B-B-B | C | D-D | E cat sort (1 0 0 1 1 0 1) <-> (BBD)
В общем случае количество таких двоичных наборов определяет число способов расположить (n-1)) единиц (или m нулей) в (n+m-1) двоичных разрядах. Это значение, очевидно, равно числу сочетаний из (n+m-1) по (n-1) или по m, то есть C(n+m-1, n-1) или C(n+m-1, m), которое в свою очередь равно числу сочетаний с повторениями f(n,m) из n элементов по m.
C(n+m−1, n−1) = C(n+m−1, m) = f(n, m).
Таким образом, имея взаимно однозначное соответствие между сочетаниями с повторениями и бинарными сочетаниями правомерно свести перечисление сочетаний с повторениями к перебору бинарных сочетаний, например, по алгоритмам транспозиции с левым или правым сдвигом. После этого остается только восстановить искомые сочетания с повторениями по полученным бинарным сочетаниям. Это всегда можно сделать, если использовать следующий восстановительный прием.
Пусть основное множество, из элементов которого образуются сочетания с повторениями по m необязательно различных элементов, упорядочено произвольным образом так, что каждый его элемент имеет определенный порядковый номер от 1 до n. Пусть также реализовано перечисление бинарных сочетаний из (n+m-1) двоичных разрядов, где (n-1) единичных и m нулевых разрядов. Каждое полученное бинарное сочетание можно дополнить слева фиктивным единичным разрядом, и пронумеровать все единичные разряды слева направо целыми числами от 1 до n. Тогда число нулей, стоящих подряд после каждой i-й единицы бинарного сочетания, будет равно количеству экземпляров i-го элемента основного множества в соответствующем сочетании с повторениями. Рассмотренный алгоритмический прием иллюстрирует следующий пример, где по бинарному сочетанию (1001101) восстанавливается сочетание с повторениями BBD, элементы которого выбраны из образующего множества первых пяти латинских букв {A,B,C,D,E}, записанных в алфавитном порядке, а апострофами обозначены все его элементы, отсутствующие в этом сочетании:
фиктивная 11 + ( 12 0 0 13 14 0 15 ) A' B B C' D E' -> BBD
Выполняя аналогичные действия в условиях данного примера, можно перечислить все 35 бинарных сочетаний, которые образуют семиразрядные двоичные наборы, где 4 единицы и 3 нуля, и восстановить соответствующие им сочетания с повторениями из n=5 элементов по 3.