十进制分数转换二进制数(思路与伪码)

  在进行十进制数转换为二进制数时,可有如下变换:

 为求等价的二进制数,将{Xn}设为转化后的每个数位上的数字、A、B分别作为分子分母,且A/B为非假分数,若为假分数,相关处理看伪码部分。

  设A/B(十进制分数)=0.x1,x2,x3,...xn  (转化而成的n位二进制)

  若 2A>=B,则得一位二进制数 ”1“,且A=2A-B;

  若2A<B,则得一位二进制数”0“,且A=2A;

  重复如上操作,直至A-B=0。


  如11/16 = 0.1011

2*11=22(>16)①;进位“1”, 此时二进制数=0.1

(22-16)*2=12(<16)②;进位“0”,此时二进制数=0.10

12*2=24(>16)③;进位“1”, 此时二进制数 =0.101

(24-16)*2=16(>=16)④;进位“1”, 此时二进制数 = 0.1011

16-16=0 ,done

output=0.1011

连贯起来便2*11→(22-16)*2→12*2→(24-16)*2→16-16→0


伪码:

①对十进制分数A/B,进行判断,若A>B,则A = A% B,且记录假分数的整数部分F = A / B。

②判断A  == B?若False 则跳转至③,若True 则跳转至④。

③判断 A * 2 >= B?若True

数组{Xn}(用于存储二进制中每一位数),Xi = 1;

A = A * 2 - B;

返回②。

False

 Xi = 0;

i = i + 1 (i用于控制数组下标移动,且初始值为0);

返回②。

④输出F与小数点".",若i == 0 ,则不输出{Xn};否则一次性输出{Xn},输出范围从下标0 ~ i-1。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值