十进制数转换为二进制数

 这是个非常基础的问题。一般在计算机引论书籍中的第一章出现。


对于十进制数的整数部分,一般使用除2取余法。

每次模2取得余数,然后除以2。直到除成0为止。将余数倒置相连就得到整数部分对应的二进制数。

除2取余法的理论依据是,整数部分的权值是2的幂数,每次除2都是将整体的权值右移一位,模2是取得最右边的数值。


对于十进制数的小数部分,一般使用乘2取整法。

不断乘2,如果结果小于1,取0,继续乘2;如果结果大于1,取1,减去1。直到结果为0为止。如果总也不能为0,就适时的停止。

乘2取整法的理论依据是,小数部分的权值是1/2的幂数,每次乘2都是将整体的权值左移一位,取整是取得最左位的数值。



给出一个十进制的浮点数,并且字符串形式的,现在要求将其转换为二进制数。

// 输入字符串是一个浮点数
public static String printBinary(String n)
{
	int intPart = Integer.parseInt(n.substring(0, n.indexOf('.')));
	// 取出整数部分
	double decPart = Double.parseDouble(n.substring(n.indexOf('.'), n.length()));
	// 取出小数部分

	String int_string = "";
	while(intPart > 0)
	{
		// 依次取出二进制形式的每一位,并连接起来
		int r = intPart % 2;
		int_string = r + int_string; 
		intPart >>= 1; //除2法
	}

	StringBuffer dec_string = new StringBuffer();
	while(decPart > 0)
	{
		if(dec_string.length() > 32)
			return "Error!";
		
		double r = decPart*2; //乘2法
		if(r > 1)
		{
			dec_string.append(1);
			decPart = r - 1;
		}
		else if(r < 1)
		{
			dec_string.append(0);
			decPart = r;
		}
		else
			break;
	}
	return int_string + "." + dec_string.toString();
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值