• 二进制转化为十进制

    ①按权展开方法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 LOCK TABLES 与UNLOCK TABLES

    http://blog.csdn.net/zyz511919766/article/details/16342003 1语法 LOCK TABLES tbl_name[[AS] alias] lock ...

  2. ubuntu新建、删除用户

    新建用户名为newuser的用户,并赋予sudo权限 adduser newuser --ingroup sudo 删除用户以及用户目录 deluser -r newuser

  3. 通俗理解 CPU && GPU

    CPU 力气大啥P事都能干,还要协调.GPU 上面那家伙的小弟,老大让他处理图形,这方面处理简单,但是量大,老大虽然能处理,可是老大只有那么几个兄弟,所以不如交给小弟处理了,小弟兄弟多,有数百至数千个 ...

  4. 解决css3不支持同时缩放和旋转的办法

    设置两个div,外层scale,内层rotate.

  5. vetur插件提示 [vue-language-server] Elements in iteration expect to have 'v-bind:key' directives

    错误如下图所示: 错误提示: [vue-language-server] Elements in iteration expect to have 'v-bind:key' directives.Re ...

  6. SQL语句之奇形怪状的冷门函数

    lag() over() ) OVER(ORDER BY C.column) FROM Table C; 第一条记录已经无法再取前一条记录,所以LAG()函数返回空. SQL为意思如下. LAG(C. ...

  7. Mysql正常启动之后默认使用的文件

    --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data  --plugin-dir=/usr/local/mysql/lib/plugi ...

  8. 第36-37 Tomcat & SVN

    1. Tomcat简介 tomcat是一个web服务器,类似nginx,apache的http nginx,http只能处理html等静态文件(jpg) 网页分为静态网页(以.html或者.htm结尾 ...

  9. c# 动态数组-----“动态”数组

    其实在大多数工作中我们能通过前处理来确定我们的数组有多大,这样我们就可以声明相应大小的数组了.我感觉这种“动态”数组就够我用了.比如我要处理excel中数据,数据有m行*n列,这样我就可以通过读取ex ...

  10. keepalive主从上同时出现VIP,且均无法消失

    低版本bug 双主架构中,keepalived日志出现: more /var/log/messageOct 9 03:16:22 mysql-dzg-60-148 Keepalived_vrrp[85 ...