博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二进制转化为十进制Java实现
阅读量:5291 次
发布时间:2019-06-14

本文共 2693 字,大约阅读时间需要 8 分钟。

  • 二进制转化为十进制
    ①按权展开方法Java实现
/*	 * 按权展开法	 */	public static double BinToTen1(String binary) {		//查找该二进制是否存在小数点		int index = binary.indexOf('.');		//转化成的十进制		double ten = 0;		//整数部分		double integer = 0;		//小数部分		double decimal = 0;		//index等于-1,说明没有小数部分		if(index == -1) {			for(int i = 0; i < binary.length(); i++) {				//48为字符'0'对应的ASCII值;				//ten += (binary.charAt(i) - 48) * Math.pow(2, -(i-(binary.length() - 1)));				//或者可以将字符转化为字符串,再由字符串转化为数字				ten += Integer.parseInt(String.valueOf(binary.charAt(i))) * Math.pow(2, -(i-(binary.length() - 1)));			}		} else {			//计算整数部分			for(int i = 0; i < index; i++) {				integer += Integer.parseInt(String.valueOf(binary.charAt(i))) * Math.pow(2, -(i-(index - 1)));			}			//计算小数部分			for(int j = index + 1; j < binary.length(); j++) {				decimal += Integer.parseInt(String.valueOf(binary.charAt(j))) * Math.pow(2, (index - j));			}			ten = integer + decimal;		}		return ten;			}

测试

public static void main(String[] args) {				double a = BinToTen1("11");		System.out.println(a);		double b = BinToTen1("0.11");		System.out.println(b);		double c = BinToTen1("11.111");		System.out.println(c);	}

在这里插入图片描述

②基位连乘、连除法Java实现

/*	 * 基位连乘、连除法	 */	public static double BinToTen2(String binary) {		//查找该二进制是否存在小数点		int index = binary.indexOf('.');		//转化成的十进制		double ten = 0;		//整数部分		double integer = 0;		//小数部分		double decimal = 0;				double temp = 0;		//index等于-1,说明没有小数部分		if(index == -1) {			if(binary.length() == 0) {				return ten;			}else if(binary.length() == 1) {				ten = Integer.parseInt(String.valueOf(binary.charAt(0)));				return ten;			} else {				ten = Integer.parseInt(String.valueOf(binary.charAt(0)));				for(int i = 1; i < binary.length(); i++) {					//最高位乘以2加下一位,直到加到最低为位置					ten = ten * 2 + Integer.parseInt(String.valueOf(binary.charAt(i)));				}			}		} else {			if(index > 0) {				//计算整数部分				integer = Integer.parseInt(String.valueOf(binary.charAt(0)));				for(int i = 1; i < index; i++) {					//最高位乘以2加下一位,直到加到最低为位置					integer = integer * 2 + Integer.parseInt(String.valueOf(binary.charAt(i)));				}			}			if(index != binary.length() - 1) {				decimal = Integer.parseInt(String.valueOf(binary.charAt(binary.length() - 1)));				//计算小数部分				for(int j = binary.length() - 2; j > index; j--) {					decimal = decimal/2 + Integer.parseInt(String.valueOf(binary.charAt(j)));				}			}			ten = integer + decimal/2;		}		return ten;			}

测试

public static void main(String[] args) {				double a = BinToTen2("1.011");		System.out.println(a);		double b = BinToTen2("0.011");		System.out.println(b);		double c = BinToTen2(".011");		System.out.println(c);		double d = BinToTen2("11.");		System.out.println(d);	}

在这里插入图片描述

转载于:https://www.cnblogs.com/shiqisir/p/10792122.html

你可能感兴趣的文章
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
目录相关的操作
查看>>
解决虚拟机vmware安装64位系统“此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态”的问题...
查看>>
C++----练习--引用头文件
查看>>
11.基本包装类型
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
用HttpCombiner来减少js和css的请问次数
查看>>
FUSE-用户空间文件系统
查看>>
将tiff文件转化为jpg文件并保存
查看>>
ubuntu 16.04 开机脚本
查看>>
 VS2012 C#调用C++ dll
查看>>
TCL:表格(xls)中写入数据
查看>>
SQL SERVER 2005中如何获取日期(一个月的最后一日、一年的第一日等等)
查看>>
django 学习笔记(转)
查看>>
控制台程序秒变Windows服务(Topshelf)
查看>>
字节流与字符流的区别详解
查看>>
20141026--娱乐-箱子
查看>>
自定义分页
查看>>