Pascal

Modified: Wednesday, 22-12-2021 07:00 AM

Chuyển đổi hệ số

10 <=> BIN

10 <=> HEX


program Chuyen10sang2;
    var a,t:int64;
    s1,s:string;
    begin
        write('Nhap so nguyen duong:');
        readln(a);
        while a<>0 do
        begin
            t := a mod 2;
            str(t,s1);
            s := s1+s;
            a := a div 2;
        end;
        write(s);
        readln;
    end.
program chuyen2sang10;
uses math;   
var h:string;
i,n:byte;
s:int64;
begin write('Nhap chuoi so Nhi phan: ');
    readln(h);
    s := 0;
    for i:=length(h) downto 1 do begin
        val(h[i],n);
        s := s+n*round(power(2,length(h)-i));
    end;    
    write('Gia tri ',h,'(2) = ',s,'(10)');
    readln;
end.
program chuyen10sang16;
    var a,t:int64;
    s1,s:string;
    begin
        write('Nhap so nguyen duong:');
        readln(a);
        while a<>0 do
        begin
            t := a mod 16;
            case t of
                1..9: str(t,s1);
                10:s1:='A';
                11:s1:='B';
                12:s1:='C';
                13:s1:='D';
                14:s1:='E';
                15 :s1:='F';
            end;        
            s := s1+s;
            a := a div 16;
        end;
        write(s);
        readln;
    end.
program chuyen16sang10;
    uses math;
    var a:string;
    i,vt:byte;
    n:int64;
    // Lấy giá trị từng số 
    function value(s:char;x:byte):longint;
    var vl:byte;
    begin
        s := upcase(s);
       case s of 
          '1'..'9':val(s,vl); 
          'A'..'F':vl:=(ord(s)-55);
       end;
       exit(round(power(16,x))*vl);
    end;
    // Chương trình chính
    begin
        write('Nhap so he 16:');
        readln(a);
        n  := 0;
        vt := 0; //Chỉ số tính từ phải sang trái
        for i:=length(a) downto 1 do 
        begin
            n := n+value(a[i],vt);
            inc(vt);
        end;
        // Ghi ra kết quả
        write(n);
        readln;
    end.