Uma função, chamada converte, tem por objetivo converter um número inteiro na base decimal (d), recebido como parâmetro, em um número inteiro na base binária (b), isto é, um número que seja formado apenas pelos algarismos 0 e 1, como nos exemplos abaixo.
Exemplos:
converte(7) = 111
converte(12) = 1100
converte(16) = 10000
Admita que o inteiro (d), recebido como parâmetro, é tal que d>=0 e d<=1024.
Qual função executa essa conversão corretamente?
static long converte(int dec) {
---if(dec == 0)
-----return dec;
---long r=converte(dec/2);
---return dec % 2 + r * 10;
}
static long converte(int dec) {
---long bin=0;
---while(dec > 0) {
-----int r= dec % 2;
-----dec=dec / 2;
-----bin+=r << 2;
-----}
------- return bin;
}
static long converte(int dec) {
---if(dec > 0)
------return dec;
---long r=converte(dec%2);
------return dec / 2 + r * 10;
}
static long converte(int dec) {
long bin=0,fat=1;
do {
int r=dec % 2;
dec=dec/2; bin+=r * fat;
fat*=10;
} while(dec >= 0);
return bin;
}
static long converte(int dec) {
----long bin=0;
----for(long fat=1; dec > 0; fat*=10) {
--------int r=dec % 2;
-------dec=dec / 2;
-------bin+=r * fat;
}
-----return bin;
}