二进制转化为十进制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类型的数据在表示小数的时候,小数点后的有 ...
随机推荐
- 手机上输入http://192.168.1.102:8888/FiddlerRoot.cer为什么下载不了证书
因为之前你的手机可能已经安装了该证书,所以再次下载会说找不到证书 解决办法:如果你遇到上面的问题,就可能是证书的问题(我的本地证书是用系统生成证书的一个软件生成的个人证书,所以出现了问题),操作步骤如 ...
- Idea项目如何迁移到Eclipse
CTRL + SHIFT + ALT + S键 (即File>Project Structure), 按照如图一样设置,设置完成后就可以直接导入到eclipse了
- mysql-libs版本冲突卸载不了
问题: 卸载mysql-libs时候出现如下依赖性无法卸载 [root@mail yum.repos.d]# rpm -e mysql-libserror: Failed dependencies: ...
- BZOJ 4129 Haruna’s Breakfast (分块 + 带修莫队)
4129: Haruna’s Breakfast Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 835 Solved: 409[Submit][St ...
- [转]两表join的multi update语句在MySQL中的执行流程分析
出自:http://hedengcheng.com/?p=209 两表join的multi update语句,执行结果与预计不一致的分析过程 — multi update结论在实际应用中,不要轻易使用 ...
- REST WebService与SOAP WebService的比较
在SOA的基础技术实现方式中WebService占据了很重要的地位,通常我们提到WebService第一想法就是SOAP消息在各种传输协议上交互.近几年REST的思想伴随着SOA逐渐被大家接受,同时各 ...
- c++ cout、<< 、cin、>> 、endl 详解
std::cout是在#include<iostream>库中的ostream类型中的对象 std::表示命名空间,标准库定义的所有名字都在命名空间std中 std::cout是在#inc ...
- (记忆化搜索)数塔 (zznu 1271)
http://acm.zznu.edu.cn/problem.php?id=1271 1271: 数塔 时间限制: 1 Sec 内存限制: 128 MB提交: 109 解决: 78[提交][状态] ...
- (最长上升子序列 并记录过程)FatMouse's Speed -- hdu -- 1160
http://acm.hdu.edu.cn/showproblem.php?pid=1160 FatMouse's Speed Time Limit: 2000/1000 MS (Java/Other ...
- kafka讲解
转载http://www.jasongj.com/2015/01/02/Kafka深度解析 Kafka是Apache下的一个子项目,是一个高性能跨语言分布式发布/订阅消息队列系统,而Jafka是在Ka ...