Ho scritto questo programmino che dovrebbe convertire un decimale in un numero binario ma entra in un loop infinito con la condizione x >= 0

(se metto x > 0 oppure x > = 1 -- x > 1 da numeri non esatti ES: 12 è uguale a 100 in binario per lui )

ECCO IL CODICE ... AIUTO!! GRAZIE IN ANTICIPO


codice:
/**
 * PROGRAMMA CHE CONVERTE I NUMERI DECIMALI IN NUMERI BINARI
 * @author Mattia Lonzi
 * @Version 0.1 2012-12-04
 */
import java.util.Scanner;

public class Binario{

    public static void main(String[]args) {
    
    System.out.println("Programma che converte i numeri decimali senza virgola in binario");
    System.out.println("INSERISCI NUMERO");

    Scanner in = new Scanner(System.in);
    int x = in.nextInt();
    int ris = x;
    int resto = x % 2;
    
    while(ris >= 0) {
        if(resto == 0) {
            ris = ris / 2;
            resto = ris % 2;
            System.out.print("1");}
        if(resto != 0) {
            ris = ris / 2;
            resto = ris % 2;
            System.out.print("0");}
     }
    
    
    if(x == 0) {
        System.out.println("0");
    }
    
    if(x == 1) {
        System.out.println("1");
    }
        
    if(x < 0) {
        System.out.println("INSERIRE SOLO NUMERI POSITIVI");
    }
}
}