Viết chương trình nhập vào một số nhị phân dài không quá 63 ký tự chữ. Hãy in ra rằng biểu diễn của nó trong hệ đếm cơ số 10. PASCAL

1 câu trả lời

uses crt;
var s: string;

function char_to_int(c: char): qword;
begin
    exit(ord(c) - 48);
end;

function AKAP(a, b: longint): qword;
var tmp: qword;
begin
    if b = 0 then exit(1);
    tmp:=AKAP(a, b div 2);
    if b and 1 = 1 then exit(a * tmp * tmp);
    exit(tmp * tmp);
end;

function decimal(s: string): qword;
var i, j: longint;
    res:qword;
begin
    res:=0; j:=0;
    for i:=length(s) downto 1 do
        begin
            inc(res, char_to_int(s[i]) * AKAP(2, j));
            inc(j);
        end;
    exit(res);
end;

begin
clrscr;
    readln(s);
    writeln(decimal(s));
readln;
end.

Câu hỏi trong lớp Xem thêm