Halting problem avec des entiers

Un ou plusieurs des codes ci-dessous terminent, et ce quelque soit la valeur de x passée en paramètre. Lesquels ?

A:

void loop(int x) {
    for (int y = Math.abs(x); y != -1; ++y) x++;
}

B:

void loop(int x) {
    int n = 0;
    for (int y = x; y != 0; y >>>= 1) n += y & 0x1;
}

C:

void loop(int x) {
    while(x & -x == 0) {}
}

D.

void loop(int x) {
    for(int i = x-1; i < x; i++) x++;
}

Solution

Les réponses correctes sont donc les réponses A, B et D.