3个回答
展开全部
1、你所谓的“二进制转十进制”,应该是指表示方式的转换,也就是字符串之间的转换。因为如果是数值,不存在什么几进制,它在内存中都是以01存储的。Delphi的进制字符串转换有很多现成的函数,Pascal得费点劲。
2、如果您要是问学Pascal的时候如何在草纸或黑板上把二进制的数演算成十进制的方法,你完全可以找本初中或小学的课外辅导书,我就不奉陪了。
一、二进制转十进制
function BinToDec(BinStr: string): string;
var
i, j: Integer;
begin
Result := '';
i := 0;
for j := 1 to Length(BinStr) do
begin
if j > 1 then
i := i shl 1;
if BinStr[j] = '1' then Inc(i)
else if BinStr[j] <> '0' then Exit;
end;
if i >= 0 then j := i
else j := -i;
while j > 0 do
begin
Result := Chr(j mod 10 + 48) + Result;
j := j div 10;
end;
if i < 0 then Result := '-' + Result;
end;
例如''11101111111111111111111111111001'',经BinToDec转化为''-268435463''。
二、十六进制转十进制,类似:
function HexToDec(HexStr: string): string;
var
i, j, k: Integer;
begin
Result := '';
i := 0;
for j := 1 to Length(HexStr) do
begin
if j > 1 then
i := i shl 4;
k := -1;
case HexStr[j] of
'0'..'9': k := Ord(HexStr[j]) - 48;
'A'..'F': k := Ord(HexStr[j]) - 55;
'a'..'f': k := Ord(HexStr[j]) - 87;
end;
if k < 0 then Exit;
Inc(i, k);
end;
if i >= 0 then j := i
else j := -i;
while j > 0 do
begin
Result := Chr(j mod 10 + 48) + Result;
j := j div 10;
end;
if i < 0 then Result := '-' + Result;
end;
例如''EFFFFFF9'',经HexToDec转化为''-268435463''。
2、如果您要是问学Pascal的时候如何在草纸或黑板上把二进制的数演算成十进制的方法,你完全可以找本初中或小学的课外辅导书,我就不奉陪了。
一、二进制转十进制
function BinToDec(BinStr: string): string;
var
i, j: Integer;
begin
Result := '';
i := 0;
for j := 1 to Length(BinStr) do
begin
if j > 1 then
i := i shl 1;
if BinStr[j] = '1' then Inc(i)
else if BinStr[j] <> '0' then Exit;
end;
if i >= 0 then j := i
else j := -i;
while j > 0 do
begin
Result := Chr(j mod 10 + 48) + Result;
j := j div 10;
end;
if i < 0 then Result := '-' + Result;
end;
例如''11101111111111111111111111111001'',经BinToDec转化为''-268435463''。
二、十六进制转十进制,类似:
function HexToDec(HexStr: string): string;
var
i, j, k: Integer;
begin
Result := '';
i := 0;
for j := 1 to Length(HexStr) do
begin
if j > 1 then
i := i shl 4;
k := -1;
case HexStr[j] of
'0'..'9': k := Ord(HexStr[j]) - 48;
'A'..'F': k := Ord(HexStr[j]) - 55;
'a'..'f': k := Ord(HexStr[j]) - 87;
end;
if k < 0 then Exit;
Inc(i, k);
end;
if i >= 0 then j := i
else j := -i;
while j > 0 do
begin
Result := Chr(j mod 10 + 48) + Result;
j := j div 10;
end;
if i < 0 then Result := '-' + Result;
end;
例如''EFFFFFF9'',经HexToDec转化为''-268435463''。
展开全部
二进制转十进制:如1101 ,十进制为1*2^0+0*2^1+1*2^2+1*2^3,其中2为权 ,二进制的每一位分别与权的N-1次方相加。
十六进制转十进制:如53,十进制为3*16^0+5*16^1,其中16为权,
十六进制转十进制:如53,十进制为3*16^0+5*16^1,其中16为权,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
做实验
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询