pascal问题,二进制转十进制

还有十六进制转十进制... 还有十六进制转十进制 展开
 我来答
RedBaronVIP
2012-11-29 · TA获得超过1147个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:234万
展开全部
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''。
888nnn888
2012-11-29
知道答主
回答量:8
采纳率:0%
帮助的人:1.1万
展开全部
二进制转十进制:如1101 ,十进制为1*2^0+0*2^1+1*2^2+1*2^3,其中2为权 ,二进制的每一位分别与权的N-1次方相加。
十六进制转十进制:如53,十进制为3*16^0+5*16^1,其中16为权,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
njyhhjh
2012-11-29 · TA获得超过289个赞
知道答主
回答量:59
采纳率:0%
帮助的人:13.1万
展开全部
做实验
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式