Sabtu, 19 Maret 2011

Pascal Convert Binary to dec - dec to binary


Disini saya akan memberikan listing pascal untuk konversi sesuai judul. Konversi ini mempunyai kelemahannya yaitu pada saat mau mengkonversi dari binary ke desimal dengan menggunakan 16bit (exp : 1111010111011010) maka hasilnya tidak akan sesuai. Nah bagi para blogger yang bisa memperbaiki listingnya silahkan untuk berbagi :)

PROGRAM bindec;
    USES crt;
    VAR dec_begin, i: longint;
    bin_number: String;
    zero_or_one, bin_or_dec: Char;
    bin: String;
    currHeading, intBinChar, x: integer;
    dec: Real;
    repeat_char: Char;
    BEGIN
    clrscr;
    REPEAT
    WRITELN('Konversi binari ke desimal, press B;Konversi desimal ke binari, press D');
    READLN(bin_or_dec);
    IF (bin_or_dec='D') OR (bin_or_dec='d') THEN
    BEGIN
    WRITELN('Masukkan nomor desimal untuk konversi ke binary: ');
    READLN(dec_begin);
    REPEAT
    IF (dec_begin mod 2) = 0 THEN zero_or_one := '0'
    ELSE zero_or_one := '1';
    bin_number := bin_number + zero_or_one;
    dec_begin := dec_begin div 2;
    UNTIL dec_begin = 0;
    FOR i := Length(bin_number) DOWNTO 1 DO
    WRITE(bin_number[i]);
    WRITELN;
    END
    ELSE
    BEGIN
    WRITELN('Masukkan nomor binary untuk konversi ke desimal: ');
    READLN(bin);
    dec := 0;
    currHeading := 0;
    FOR i := Length(bin) DOWNTO 0 DO
    BEGIN
    IF currHeading > 0 THEN currHeading := currHeading * 2
    ELSE currHeading := 1;
    Val(bin[i], intBinChar, x);
    dec := dec + (intBinChar * currHeading);
    END;
    WRITELN(dec:10:0);
    END;
    WRITELN('Ulang? Y/N');
    READLN(repeat_char);
    UNTIL (repeat_char = 'N') OR (repeat_char = 'n');
    READLN;
    END.

Tidak ada komentar:

Posting Komentar