kgc wrote:
> Er sørme blevet pænt og forståeligt siden første post
Virker det
> efter hensigten nu?
>
> Bare en tanke der lige faldt mig ind:
> int max = 5;
> int temp = dec;
> String bin = "";
> for(int i = max; i > 0; i--) {
> int p = 2^i;
> bin = bin + (temp/p);
> temp = temp % p;
> }
> System.out.println(dec + " in binary is " + bin);
>
> Ikke testet, ikke nødvendigvis bedre, men jeg syntes dog måske alligevel
> det har en vis elegance og letlæselighed? Men OK, måske grunden til du i
> første omgang ikke skrev hvad koden skulle gøre, var at du selv ville
> finde en måde, frem for at få den serveret, og det er da
> beundringsværdigt og fornuftigt hvis du er ved at lære.
>
>
> Mvh. Kasper
Nu var det rigtigt nok ikke metoden der spørges til; men det er da
rigtigt at proplemet kan løses på mange elegante måder:
eksempelvis substraktion af potens:
int max = 5;
int loop = max - 1;
temp = dec;
bin = "";
while (loop >= 0) {
if (temp - ((int) Math.pow(2, loop)) >= 0) {
bin += "1";
temp = temp - (int) Math.pow(2, loop);
} else {
bin += "0";
}
loop--;
}
System.out.println(dec + " in binary is " + bin);
}
Umiddelbart ulemper; da man ser på højeste betydende ciffer først, skal
vi kende terminerings grundlaget før start.
Lettest må derfor være at kigge på lige/ulige shift startende med
laveste betydende ciffer:
int dec;
int temp = dec;
String bin = "";
while (temp > 0) {
bin = (temp % 2) + bin;
temp = temp / 2;
}
System.out.println(dec + " equals:" + bin);
mvh
Hans