• 二进制转化为十进制

    ①按权展开方法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实现的更多相关文章

  1. 二进制转化、<<、>>、>>>移位运算

    参考资料: https://www.cnblogs.com/wxb20/p/6033458.html https://www.cnblogs.com/joahyau/p/6420619.html ht ...

  2. 将十进制数据转换为二进制AND将二进制数据转换为十进制!

    一,将十进制数据转换为二进制:  //***********************************************            Console.WriteLine(&quo ...

  3. 基于opencv将视频转化为字符串Java版

    基于opencv将视频转化为字符串Java版 opencv java  先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...

  4. C 如何将输出的地址转化为十进制数

    •需求 这两天在看内存对齐的相关问题,因此产生了一个,如何将地址转换为十进制数? 对于如下程序: void func() { int a = 10; printf("a 的地址为:%p\n& ...

  5. java socket解析和发送二进制报文工具(附java和C++转化问题)

    解析: 首先是读取字节: /** * 读取输入流中指定字节的长度 * <p/> * 输入流 * * @param length 指定长度 * @return 指定长度的字节数组 */ pu ...

  6. java中 二进制 八进制 十六进制 十进制 相互转换 最简方法

    package com.swift; import java.util.Scanner; public class Hex2Decimal { public static void main(Stri ...

  7. 给定一个IP地址,转化为二进制32位,再转化为十进制,写出一个方法让其十进制转为IP地址

    十进制是已知的数值 第一种方法: <script type="text/javascript"> var num=2148140545; var str=num.toS ...

  8. 将两个byte型拼接成16位二进制,再转化为十进制

    short s = 0; //一个16位整形变量,初值为 0000 0000 0000 0000 byte b1 = 1; //一个byte的变量,作为转换后的高8位,假设初值为 0000 0001 ...

  9. 中南林业科技大学第十一届程序设计大赛 有趣的二进制 牛客网 java大数的一些方法

    链接:https://www.nowcoder.com/acm/contest/124/C来源:牛客网 题目描述 小新在学C语言的时候,邝老师告诉他double类型的数据在表示小数的时候,小数点后的有 ...

随机推荐

  1. 使用xtrabackup备份innodb引擎的数据库

    innodb引擎的数据库可以使用mysqldump备份,如果表很大几十个G甚至上百G,显示用mysqldump备份会非常慢.然后使用xtrabackup 可以很快的在线备份innodb数据库.Inno ...

  2. 使用 jfreechart 生成 曲线、柱状图、饼状图、分布图 展示到JSP

    虽然现在JS做报表和图形展示已经非常普遍和漂亮了,但是不能忽略有jfreechart 这样一种东西! 这些翻阅资料,在看以前写的示例时发现了关于jfreechart 的简单示例,不管怎样发上来分享一下 ...

  3. 使用Ant发布web应用到tomcat

    使用Ant发布web应用到tomcat 来自:http://blog.csdn.net/hbcui1984/article/details/1954537 今天在公司用ant写了个部署web应用的脚本 ...

  4. Codeforces Round #517 (Div. 2) C. Cram Time(思维+贪心)

    https://codeforces.com/contest/1065 题意 给你a,b,让你找尽量多的自然数,使得他们的和<=a,<=b,用在a和b的自然数不能重复 思路 假如只有一个数 ...

  5. java Concurrent包学习笔记(五):Semaphore

    一.Semaphore 是什么  信号量Semaphore是一个并发工具类,用来控制可同时并发的线程数,其内部维护了一组虚拟许可,构造函数初始化的时候可以指定许可的总数量 每次线程执行操作时先通过ac ...

  6. openstack之flavor管理

    概览 [root@cc07 ~]# nova help | grep flavor flavor-access-add Add flavor access for the given tenant. ...

  7. java学习2打架代码编写

    在同一个包中的Player类 package work; public class Player { private String name; private int hp; private int ...

  8. SDIBT 2345 (3.2.1 Factorials 阶乘)

    Description N的阶乘写作N!表示小于等于N的所有正整数的乘积.阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了.你的任务是找到阶乘最后面的非零位.举个例 ...

  9. x86_64汇编调试程序初步

    寄存器说明: rdi 存第1个参数(值或地址) rsi 存第2个参数 rdx 存第3个参数 rcx 存第4个参数 r8 存第5个参数 r9 存第6个参数 rax 第1个返回值 rdx 第2个返回值 r ...

  10. android-基础编程-ListView

    ListView主要包括view和数据源.其数据适配器列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter. ListView的没有oom原因.经 ...