java十进制转二进制代码(java十进制二进制相互转换)
用java写一个 十进制转为二进制的程序
将十进制转换成二进制的算法如下:
1.给定一个数;
2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。
3.然后把r的值送到一个数组里面。最后把这个数组里面的内容从后面打印出来就可以了。
import java.util.Scanner;
public class Hi {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个十进制需要转换为二进制的正整数");
int n=sc.nextInt();
int r;
int i=0;
int[] a=new int[20];
do{
if(n%2==1)
r=1;
else
r=0;
a[i]=r;
n/=2;
i++;
}while(n0);
System.out.println("十进制转换为二进制後:");
for(int j=i-1;j=0;j--){
System.out.print(a[j]);
}
}
}
java十进制转二进制代码怎么解决?
下面是根据十进制数转二进制数的算法所写的一段Java程序示例代码:
import java.math.BigDecimal;
public class Test {
public static void main(String[] args) {
Test t = new Test();
double d = 8;
String s = t.decimal2BinaryStr(d);
System.out.println("十进制数"+d+"转成二进制数为:"+s);
}
/**
* 十进制数转二进制数
* @param d 十进制数
* @return 十进制数转换成二进制的字符串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十进制整数部分转二进制数
* @param d 十进制数
* @return 十进制整数部分转换成二进制的字符串
*/
public String decimal2BinaryStr_Inte(double d){
// ? ? ?return Integer.toBinaryString((int)d);
/*
* 本来利用上面的Integer.toBinaryString(int)就可以得到整数部分的二进制结果,
* 但为了展示十进制转二进制的算法,现选择以下程序来进行转换
*/
String result = "";
long inte = (long)d;
int index = 0;
while(true){
result += inte%2;
inte = inte/2;
index++;
if(index%4 == 0){
result+=" ";
}
if(inte==0){
while(index%4!=0){
result+="0";
index++;
}
break;
}
}
char[] c = result.toCharArray();
char[] cc = new char[c.length];
for(int i=c.length; i0; i--){
cc[cc.length-i] = c[i-1];
}
return new String(cc);
}
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d){
return decimal2BinaryStr_Deci(d, 0);
}
/**
* 十进制小数部分转二进制
* @param d 十进制数
* @param scale 小数部分精确的位数
* @return 十进制小数部分转换成二进制小数的字符串
*/
public String decimal2BinaryStr_Deci(double d, int scale){
double deci = sub(d,(long)d);
if(deci==0){
return "";
}
//为了防止程序因所转换的数据转换后的结果是一个无限循环的二进制小数,因此给其一个默认的精确度
if(scale==0){
scale = (String.valueOf(deci).length()-2)*4;
}
int index = 0;
StringBuilder inteStr = new StringBuilder();
double tempD = 0.d;
while(true){
if(deci==0 || index==scale){
while(index%4!=0){
inteStr.append("0");
index++;
}
break;
}
if(index==0){
inteStr.append(".");
}
tempD = deci*2;
inteStr.append((int)tempD);
deci = sub(tempD ,(int)tempD);
index++;
if(index%4 == 0){
inteStr.append(" ");
}
}
return inteStr.toString();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
}
例如将十进制数1234.5转成二进制数为:0100 1101 0010.1000
JAVA编程,请问怎么将十进制数转换成二进制输出,又怎么将二进制数转换成十进制输出?
1、创建java类,TestNumConv.java;
2、编写java函数,十进制转二进制;
public static void decimalToBinary(int n) {
String str = "";
while (n != 0) {
str = n % 2 + str;
n = n / 2;
}
System.out.println(str);
}
3、编写java函数,二进制转十进制;
public static void binaryToDecimal(String n) {
System.out.println(Integer.parseInt(n, 2));
}
4、在main方法中,分别调用该两个函数,执行结果满足要求;
TestNumConv.decimalToBinary(123);
TestNumConv.binaryToDecimal("11011");
十进制转二进制java代码
import?java.util.*;
public?class?Main?{
/**
*?@param?args
*/
public?static?void?main(String[]?args)?{
//?TODO?自动生成方法存根
int?i,k=0;
for(int?n=2;n1n200000000;n++){
StringBuilder?sb=new?StringBuilder();
Scanner?sc=new?Scanner(System.in);
System.out.print("");
i=sc.nextInt();
int?r;
do{
if(i%2==1){
r=1;}
else{
r=0;
}
i/=2;
k++;
sb.insert(0,r);
}while(i0);
System.out.println(sb.toString());
}
}
}
JAVA中的十进制如何转换为二进制?
十进制转成二进制Integer.toBinaryString(int i) 。
例子:
public class Test{
public static void main(String args[]){?
int i=100;
String binStr=Integer.toBinaryString(i);
String otcStr=Integer.toOctalString(i);
String hexStr=Integer.toHexString(i);
System.out.println(binStr);
如何把一个十进制数转为二进制数的Java程序?
十进制数转二进制分2部分,整数和小数部分。
1、整数部分
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2、小数部分
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
示例:
public?class?ErJinZhi{
????public?String?trans(int?zheng){//转整数部分
????????String?temp?=?"";
????????while(zheng!=0){//一直到整数部分为0
????????????temp?=?(zheng%2)+temp;//余数,并且拼接起来
????????????zheng?=?zheng/2;//除2取整
????????}
????????return?temp;//余数拼起来后返回
????}
?
????public?String?trans(float?xiao){
????????if(xiao1){//如果大于1,则有整数部分,出错了
????????????return?"false";
????????}
????????String?temp?=?"";
????????int?weishu?=?10;????????//小数位数,精度
????????for(int?i=0;iweishu;i++){
????????????xiao*=2;//乘以2
????????????if(xiao=1){//取整
????????????????temp+="1";
????????????????xiao?=?xiao-1;//去除整数后取小数
????????????}else{
????????????????temp+="0";//取整数位
????????????}
????????}
????????return?temp;//返回小数二进制数
????}
?
?
?
????public?static?void?main(String[]?args){
????????System.out.println("Please?input:");
????????Scanner?sc?=?new?Scanner(System.in);
????????float?n?=?sc.nextFloat();//获取一个输入的十进制数
?????????
????????int?zheng?=?(int)n;//取整数部分
????????float?xiao?=?n-zheng;//取小数部分
?????????
????????String?temp?=?new?ErJinZhi2().trans(zheng);//整数部分转换成二进制
????????String?temp2?=?new?ErJinZhi2().trans(xiao);//小数部分转换成二进制
????????System.out.println(temp+"."+temp2);//输出二进制小数
????}
}