public class Osajoukko2 {
    public final static int KOKO = 20;

    public static int uusi() {
        return 0;
    }

    public static int lisaa(int joukko, int luku) {
        return joukko | 2<<luku;
    }

    public static int poista(int joukko, int luku) {
        return joukko & ~(2<<luku);
    }

    public static boolean kuuluu(int joukko, int luku) {
        return (joukko & (2<<luku)) != 0;
    }

    public static void tulosta(int joukko) {
        for (int i = 1; i <= KOKO; i++) {
            if (kuuluu(joukko, i)) System.out.print(i + " ");
        }
        System.out.println();
    }

    public static int leikkaus(int x, int y) {
        return x & y;
    }

    public static int yhdiste(int x, int y) {
        return x | y;
    }

    public static void main(String[] args) {
        int a = uusi();
        a = lisaa(a, 3);
        a = lisaa(a, 5);
        a = lisaa(a, 8);
        a = lisaa(a, 9);
        System.out.println("Joukon a sisältö:");
        tulosta(a);

        int b = uusi();
        b = lisaa(b, 5);
        b = lisaa(b, 7);
        b = lisaa(b, 9);
        b = lisaa(b, 12);
        b = lisaa(b, 18);
        b = lisaa(b, 2);
        System.out.println("Joukon b sisältö:");
        tulosta(b);

        System.out.println("Yhteiset alkiot:");
        tulosta(leikkaus(a, b));

        System.out.println("Kaikki alkiot:");
        tulosta(yhdiste(a, b));

        int c = uusi();
        c = lisaa(c, 10);
        System.out.println("10 kuuluu joukkoon c: " + kuuluu(c, 10));
        c = poista(c, 10);
        System.out.println("10 kuuluu joukkoon c: " + kuuluu(c, 10));
    }
}
