十进制小数转二进制小数方法

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

十进制小数→→→→→二进制小数 方法:“乘2取整”

对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
:0.25的二进制
0.25*2=0.5 
取整是0
0.5*2=1.0   
取整是1
0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)

0.8125的二进制

0.8125*2=1.625   取整是1

0.625*2=1.25     取整是1

0.25*2=0.5       取整是0

0.5*2=1.0        取整是1

0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位)

 

十进制小数→→→→→八进制小数 方法:8取整

0.71875
10 =0.568

 

0.71875*8=5.75  取整5

0.75*8=6.0      取整6
0.56

十进制小数→→→→→十六进制小数方法:16取整例如:

(0.142578125)10=(0.248)16

 

0.142578125*16=2.28125  取整2

0.28125*16=4.5          取整4

0.5*16=8.0              取整8

0.248

写个纯十进制小数转换十六进制的函数:

<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />Delphi(Pascal) code

 

function HexFloat(f: Double): String;

begin

  Result := '0';

  if f > 1E-99 then

  begin

    Result := Result + '.';

    while f > 1E-99 do

    begin

      f := f * 16;

      Result := Result + IntToHex(Trunc(f), 1);

      f := f - Trunc(f);

    end;

  end;

end;

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  ShowMessage (HexFloat(0.142578125));

end;

 

 

非十进制数之间的转换

1)二进制数与八进制数之间的转换

转换方法是:以小数点为界,分别向左右每位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:

423458=100 010 011.100 1012

1001001.11012=001 001 001.110 1002=111.648

2)二进制与十六进制转换

转换方法:以小数点为界,分别向左右每位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:

ABCDEF16=1010 1011 1100 1101.1110 11112

101101101001011.011012=0101 1011 0100 1011.0110 10002=5B4B6816

转载于:https://www.cnblogs.com/qdlgx/archive/2008/09/10/1288500.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值