Spero di aver capito bene quello che serviva...questo codice dovrebbe stampare tutte le combinazioni di 0 e 1 a seconda del numero che metti in "n" (numero delle colonne). :master:

codice:
public class Prova {
    
    final static int cost = 2;
    
    public static void main(String[] args) {
        
        int n = 4;
        int m, k, s;
        
        m = exp(cost,n);
        int[][] comb = new int[m][n];
        
        for (int j=1; j<=n; j++){
            k = m/exp(2,j);
            s = 1;
            for (int i=1; i<=m; i++){
                if (s%2!=0){
                   comb[i-1][j-1] = 0;
                   if (i%k==0){
                       s++;
                   }
                }
                else{
                   comb[i-1][j-1] = 1;
                   if (i%k==0){
                       s++;
                   }
                }
            }
        }
        for (int i=0; i<m; i++){
            System.out.println();
            for (int j=0; j<n; j++)
                System.out.print(comb[i][j] + " ");
        }
    }
    
    private static int exp(int m, int n){
        int z = m;
        for (int i=2; i<=n; i++)
            z = z * 2;
        return z;
    }
}
Scusa il nome delle variabili non molto esplicativi ma ho buttato già sta cosa velocemente...se vuoi qualche spiegazione chiedi pure.

Ciao.