十进制转化为二进制Java实现
- 提取2的幂
这个方法用代码实现貌似有点麻烦,需要探测大小,我只实现了整数十进制到二进制的转化
/*
* 提取2的幂
*/
public static String TenToBin1(int ten) {
int index = 0;
StringBuffer binBuffer = new StringBuffer();
//int类型是4个字节,32位,找到刚好大于输入的数的位置
for(int i = 0; i <= 32; i++) {
if((int)(Math.pow(2, i)) <= ten) {
continue;
} else {
index = i;
break;
}
}
//开始探测,若ten大于2的index次幂,就相减,对应位数为1
for(int j = index - 1; j >= 0; j--) {
if(ten - Math.pow(2, j) > 0) {
binBuffer.append("1");
ten = (int) (ten - Math.pow(2, j));
continue;
} else if(ten - Math.pow(2, j) < 0) {
binBuffer.append("0");
continue;
} else {
binBuffer.append("1");
index = j;
break;
}
}
if(index != 0) {
for(int z = index - 1; z >= 0; z--) {
binBuffer.append("0");
}
}
return binBuffer.toString();
}
测试
public static void main(String[] args) {
System.out.println(TenToBin1(3));
System.out.println(TenToBin1(8));
System.out.println(TenToBin1(9));
System.out.println(TenToBin1(16));
}
②基数相除,相乘,这里也只是实现了整数十进制的转化,由于double不精确,所以小数计算起来有点麻烦,有待解决
/*
* 基数连除、连乘法
*/
public static String TenToBin2(String tenString) {
StringBuffer s = new StringBuffer();
StringBuffer s1 = new StringBuffer();
int index = tenString.indexOf('.');
if(index == -1) {
//取整数部分
int d = Integer.parseInt(tenString);
while(d != 0) {
s.append(d%2);
d = (int)(d/2);
}
String str = s.toString();
for(int i = str.length() - 1; i >= 0; i--) {
s1.append(str.charAt(i));
}
} else {
//计算整数部分
String str1 = tenString.substring(0, index);
int integer = Integer.parseInt(str1);
while(integer != 0) {
s.append(integer%2);
integer = (int)(integer/2);
}
String str = s.toString();
for(int i = str.length() - 1; i >= 0; i--) {
s1.append(str.charAt(i));
}
}
return s1.toString() ;
}
十进制转化为二进制Java实现的更多相关文章
- hdu5432Rikka with Array (数位dp+十进制转化为二进制)
Problem Description As we know, Rikka is poor at math. Yuta is worrying about this situation, so he ...
- 用JS实现将十进制转化为二进制
- 【模板小程序】任意长度非负十进制数转化为二进制(java实现)
妈妈再也不用担心十进制数过大了233(注意只支持非负数) import com.google.common.base.Strings; import java.math.BigInteger; imp ...
- Java中实现十进制数转换为二进制的三种思路
Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ...
- Java十进制转成二进制 八进制 十六进制
int a = 357;//十进制转成二进制System.out.println(Integer.toBinaryString(a)); package com.swift; import java. ...
- Java查表法实现十进制转化成其它进制
首先了解十进制转化成二级制的原理 156的二进制为: 156 % 2 = 78 …… 0 83 % 2 = 39 …… 0 39 % 2 = 19 …… 1 19 % 2 = 9 …… 1 9 % 2 ...
- Java十进制数转二进制的方法
使用Integer.toBinaryString(num) ,可以把十进制数转换成二进制 //十进制转换成二进制 Integer.toBinaryString(num); binary 二进制 Sys ...
- java_十进制数转换为二进制,八进制,十六进制数的算法
java_十进制数转换为二进制,八进制,十六进制数的算法 java Ê®½øÖÆÊýת»»Îª¶þ½øÖÆ,°Ë½øÖÆ,Ê®Áù½øÖÆÊýµÄË㕨 using System; using S ...
- 将十进制数据转换为二进制AND将二进制数据转换为十进制!
一,将十进制数据转换为二进制: //*********************************************** Console.WriteLine(&quo ...
随机推荐
- 设置 VS 工程目录不保存 sdf / VC.db 文件和 Ipch 文件夹
使用 Visual Studio 建立 C++ 解决方案时,会生成 SolutionName.sdf(Visual Studio 2015 Update 2 后改为 project_name.VC.d ...
- Android Spinner 设置setOnItemSelectedListener时,竟会默认触发一次事件!
当然是关闭这坑货了: //禁止OnItemSelectedListener默认自动调用一次 spinnerDutyPerson.setSelection(0, true); //放到TagContai ...
- Spring再接触 注入类型
共有三种注入类型 一种是set注入 一种是构造注入 一种是接口注入 最常用的还是set 现在看一下construct 构造注入 在userservice中加入 package com.bjsxt.se ...
- Mesh属性[Unity]
Mesh属性[Unity] Mesh是Unity内的一个组件,称为网格组件.3D网格是Unity中最重要的图形元素.在Unity中存在多种组件用于渲染标准网格或者蒙皮网格.拖尾或者3D线条. 在Uni ...
- html网页练习豆瓣网
html </head> <body> <!-- 头部 --> <header class="header1"> ...
- 编译wiredtiger rpm包
1.安装rpm-build 使用rpmbuild打包rpm包前,首先安装rpmbuild: yum install rpm-build -y 2.创建打包文件目录 mkdir -p /root/r ...
- cdnbest常见http状态码解释
cdnbest的常见状态码提示界面: 400状态码:语义有误,当前请求无法被服务器理解 网站访问报这个提示:host not found(找不到主机),这是没有同步站点信息到这个节点上,检查节点连接主 ...
- python获取文件夹的大小(即取出所有文件计算大小)
import os path = r'/Users/authurchen/PycharmProjects/Demo' # print(os.listdir(path)) ls = os.listdir ...
- android studio 创建图标
参考 https://www.cnblogs.com/c546170667/p/5975550.html File-New-Image Asset
- redis在windows系统下的安装和两个问题
今天首次接触redis,遇到一些问题,查了一些资料,在这里汇总整理下. redis的安装看这个:http://www.runoob.com/redis/redis-install.html. 问题1: ...