• 二进制转化为十进制

    ①按权展开方法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. 【转】mysql查看表空间占用情况

    ${database} 为数据库的名称 /*1.查看索引 (1)单位是GB*/ SELECT CONCAT(ROUND(SUM(index_length)/(**), ), ' GB') AS 'To ...

  2. 2018.10.27 loj#6035. 「雅礼集训 2017 Day4」洗衣服(贪心+堆)

    传送门 显然的贪心题啊...考试没调出来10pts滚了妙的一啊 直接分别用堆贪心出洗完第iii件衣服需要的最少时间和晾完第iii件衣服需要的最少时间. 我们设第一个算出来的数组是aaa,第二个是bbb ...

  3. 如何将本地代码通过git上传到码云

    ps:同部署到GitHub上一样 http://www.cnblogs.com/pcx105/p/7777932.html

  4. 假期训练七(hdu-2845 dp,hdu-1846,2188 巴什博奕)

    题目一:传送门 思路:动态规划,从每一行来看,每次更新求出这一点的最大值,dp[i]=MAX(dp[i-1],dp[i]+dp[i-2]),不会出现 两个数字相邻的情况:先对行进行更新,再对列进行更新 ...

  5. pat1079+1086+1090+1094(树的遍历)感想

    今天做了这4道题,虽然大部分以前做过,但还是有些知识掌握不全. 总结一下所用的树的知识及解决方法 (1)非二叉树的遍历: 非二叉树就是图,所以它的存储结构类似邻接表,c++提供了vector数组可以很 ...

  6. MySQL处理表字段小技巧

    MySQL利用正则函数替换值 update dateTest set date=REPLACE(date,'/','') where date REGEXP '\/'; SQL语句讲解: -- 将 所 ...

  7. VS2013利用ajax访问不了json文件——VS2013配置webconfig识别json文件

    这两天用VS2013开发工具来访问json文件,老是报404文件,我根据网上来设置IIS添加MIME重启IIS和VS2013还是失败,无法访问json文件,但是奇怪的是可以访问txt文件 查询了很多方 ...

  8. git windows下载安装 (git命令)

    Set up git At the heart of GitHub is an open source version control system (VCS) called Git. Git is ...

  9. _技巧_SublimeText_打开文件乱码解决

    macOS属于Unix分支,默认使用UTF-8编码,当从Window 或者其他Linux 或 Unix系统 拷贝文件过来,由于Window系统使用GBK或者GB2312中文编码,所以会出现乱码现象. ...

  10. eclipse选中某个字段没法高亮其他相同字段

    eclipse选中某个字段无法高亮其他相同字段解决办法: window >> preference >> java >> Editor >> Mark ...