二进制转化为十进制Java实现
- 二进制转化为十进制
①按权展开方法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);
}

二进制转化为十进制Java实现的更多相关文章
- 二进制转化、<<、>>、>>>移位运算
参考资料: https://www.cnblogs.com/wxb20/p/6033458.html https://www.cnblogs.com/joahyau/p/6420619.html ht ...
- 将十进制数据转换为二进制AND将二进制数据转换为十进制!
一,将十进制数据转换为二进制: //*********************************************** Console.WriteLine(&quo ...
- 基于opencv将视频转化为字符串Java版
基于opencv将视频转化为字符串Java版 opencv java 先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...
- C 如何将输出的地址转化为十进制数
•需求 这两天在看内存对齐的相关问题,因此产生了一个,如何将地址转换为十进制数? 对于如下程序: void func() { int a = 10; printf("a 的地址为:%p\n& ...
- java socket解析和发送二进制报文工具(附java和C++转化问题)
解析: 首先是读取字节: /** * 读取输入流中指定字节的长度 * <p/> * 输入流 * * @param length 指定长度 * @return 指定长度的字节数组 */ pu ...
- java中 二进制 八进制 十六进制 十进制 相互转换 最简方法
package com.swift; import java.util.Scanner; public class Hex2Decimal { public static void main(Stri ...
- 给定一个IP地址,转化为二进制32位,再转化为十进制,写出一个方法让其十进制转为IP地址
十进制是已知的数值 第一种方法: <script type="text/javascript"> var num=2148140545; var str=num.toS ...
- 将两个byte型拼接成16位二进制,再转化为十进制
short s = 0; //一个16位整形变量,初值为 0000 0000 0000 0000 byte b1 = 1; //一个byte的变量,作为转换后的高8位,假设初值为 0000 0001 ...
- 中南林业科技大学第十一届程序设计大赛 有趣的二进制 牛客网 java大数的一些方法
链接:https://www.nowcoder.com/acm/contest/124/C来源:牛客网 题目描述 小新在学C语言的时候,邝老师告诉他double类型的数据在表示小数的时候,小数点后的有 ...
随机推荐
- 导入mysql报错问题
今天数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题 2个解决方法: 1.临时修改:mysql>set global max ...
- Hibernate 的Configuration、sessionFactory和session和transaction对象解释
1.Configuration对象: Configuration conf=new Configuration(); conf.configure(); 1.1 到 src下面找到名称hibernat ...
- AOP的异常通知
一.配置异常通知的步骤 (Aspectj方式) 1.只有当切点报异常才能触发异常通知 2.在spring中有Aspectj 方式提供了异常通知方法 2.1 如果希望通过 schema-base 实 ...
- php中 isset函数有什么功能
isset是判断一个变量是否定义过即使它没有值,返回值也是true比如$name="";或var $name;那么if(isset($name))echo 1;它也会输出1,因为$ ...
- 创建Java程序并设置快捷提示
1.new Java project 创建项目 2.new package 创建包,cn.com.test 3.创建Java文件 4.Java智能提示的设置 window/preference 在Au ...
- Android 从相机或相册或获取图片(转)
参考: https://github.com/ASDbobo/GetPhotoDemo Android 8.0 调取系统摄像头和相册选择图片 9.3 使用Camera拍照
- bind函数(c++11)
1.概念 1)c++11使用bind()函数可以向函数传递参数,一般调用形式为: 返回的newCallable是一个可调用的对象,callable是需要传参的函数,arg_list是参数列表 2)bi ...
- jq 某个时间段的倒计时
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 第26章:MongoDB-索引
①索引 索引本质上是树,最小的值在最左边的叶子上,最大的值在最右边的叶子上,使用索引可以提高查询速度(而不用全表扫描),也可以预防脏数据的插入(如唯一索引). 索引通常能够极大的提高查询的效率,如果没 ...
- MySQL中的数据约束
什么是数据约束: 对用户操作表的数据进行约束 1.默认值: 作用:当用户对使用默认值的字段不插入值的时候,就使用默认值. 注意:1)对默认值字段插入null是可以的. 2)对默认值字段可以插入非nul ...