Meanzie Skrevet 7. juni 2010 Del Skrevet 7. juni 2010 (endret) Joda, poster her bare for å få tips om forenkling av koden =] public int binToDec(String bin) { int dec = 0; int m = 1; for(int i=0; i < bin.length(); i++) { dec += bin.charAt(bin.length() - i - 1) == '1' ? m : 0; m += m; } return dec; } public String decToBin(int dec) { String revBin = ""; double curNum = dec; while(curNum > 1) { double num = curNum / 2; if((int)num != num) { revBin += "1"; } else { revBin += "0"; } if(((int)num) == 1) { revBin += "1"; } curNum = (int)num; } String realBin = ""; for(int i=0; i<revBin.length(); i++) { realBin += revBin.charAt(revBin.length() - i - 1); } return realBin; } Edit: Hvis det skulle være uklart er DecToBin altså Decimaltall til binærtall og da blir BinToDec det motsatte som er binær til decimal... Endret 7. juni 2010 av Meanzie Lenke til kommentar
radlekatt Skrevet 7. juni 2010 Del Skrevet 7. juni 2010 Den stringreverseringen du gjør i decToBin kan du vel spare deg, om du prepender 0 og 1 til revBin-strengen i stedet for å appende. Radlekatt Lenke til kommentar
Patton Skrevet 7. juni 2010 Del Skrevet 7. juni 2010 I tilfelle du ikke vet det, så kan du også gjøre følgende: public int binToDec(String bin) { return Integer.parseInt(bin,2); } public String decToBin(int dec) { return Integer.toString(dec,2); } Lenke til kommentar
x871kx6167ss7 Skrevet 8. juni 2010 Del Skrevet 8. juni 2010 decToBin kan du forenkle en god del uten å gå bort fra prinsippet du bruker. Regner med du ikke vil ha kode. Du kan legge til tegnene forran(som radlekatt sier). Du kan bruke heltallsdivisjon og modulo i stede for flyttall. Fortsett helt til du får 0, så slipper du special case. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå