Ваш второй регистр эквивалентен списку двоичных значений из 4 цифр. Давайте предположим, что A - самая правая цифра, а D - самая левая. Всего 16 комбинаций:
DCBA
0000
0001
0010
0011
0100
...
1110
1111
Каждая комбинация декодируется следующим образом:
DCBA
1010 = DB
, так как есть позиции в позициях B и D.
У вас есть несколько способов генерировать и / или декодировать двоичные числа в Java.
Например, с побитовыми операциями:
public static void main(String[] args) {
// starting from 1 since 0000 is not needed
for(int i=1; i<16; ++i) {
// bitwise operation & detects 1 in given position,
// positions are determined by sa called "masks"
// mask has 1 in position you wish to extract
// masks are 0001=1, 0010=2, 0100=4 and 1000=8
if( (i & 1) > 0 ) System.out.print("A");
if( (i & 2) > 0 ) System.out.print("B");
if( (i & 4) > 0 ) System.out.print("C");
if( (i & 8) > 0 ) System.out.print("D");
System.out.println("");
}
}