import java.math.BigDecimal;
我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、麗江ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的麗江網(wǎng)站制作公司
public class Test {
public static void main(String[] args) {
Test t = new Test();
double d = 8;
String s = t.decimal2BinaryStr(d);
System.out.println("十進(jìn)制數(shù)"+d+"轉(zhuǎn)成二進(jìn)制數(shù)為:"+s);
}
/**
* 十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)
* @param d 十進(jìn)制數(shù)
* @return 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制的字符串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十進(jìn)制整數(shù)部分轉(zhuǎn)二進(jìn)制數(shù)
* @param d 十進(jìn)制數(shù)
* @return 十進(jìn)制整數(shù)部分轉(zhuǎn)換成二進(jìn)制的字符串
*/
public String decimal2BinaryStr_Inte(double d){
// ? ? ?return Integer.toBinaryString((int)d);
/*
一、java的簡介
java是由Sun Microsystems公司推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)語言(以下簡稱Java語言)和Java平臺(tái)的總稱。
Java由James Gosling和同事們共同研發(fā),并在1995年正式推出。Java最初被稱為Oak,是1991年為消費(fèi)類電子產(chǎn)品的嵌入式芯片而設(shè)計(jì)的。
Java被廣泛接受并推動(dòng)了Web的迅速發(fā)展,常用的瀏覽器均支持Javaapplet。另一方面,Java技術(shù)也不斷更新。Java自面世后就非常流行,發(fā)展迅速,對(duì)C++語言形成有力沖擊。
在全球云計(jì)算和移動(dòng)互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。2010年Oracle公司收購Sun Microsystems。
import?java.util.Stack;
/**
*?author:?liu?jun?bao
*?date:?2020/2/28
*?desc:
*/
public?class?Test?{
public?static?void?main(String[]?args)?{
Integer?a?=?300;
Integer?b?=?8;
BinaryConversion(a,?b);
}
/**
*
*?@param?a?要轉(zhuǎn)化的十進(jìn)制數(shù)
*?@param?b?要轉(zhuǎn)化的進(jìn)制
*??????????該方法輸出轉(zhuǎn)化結(jié)果
*/
private?static?void?BinaryConversion(Integer?a,?Integer?b)?{
Stack?stack?=?new?Stack();
while?(a?!=?0){
stack.push(a%b);
a=a/b;
}
while?(!stack.empty()){
System.out.print(stack.pop());
}
}
}
1、用Integer.toHexString方法即可將十進(jìn)制裝成十六進(jìn)制。
package com.test;
public class Test {
public static void main(String[] args) {
int i = 123;
System.out.println(Integer.toHexString(i));
}
}
2、運(yùn)行結(jié)果如下十進(jìn)制的123轉(zhuǎn)化成十六進(jìn)制的7b
3、Integer.toHexString方法返回的結(jié)果是字符串。
4、直接表達(dá)16進(jìn)制,在JAVA里面可以在數(shù)字前加"0x",像這樣
int j = 0x7b;
System.out.println(Integer.decode("0x7b"));
下面是根據(jù)十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)的算法所寫的一段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("十進(jìn)制數(shù)"+d+"轉(zhuǎn)成二進(jìn)制數(shù)為:"+s);
}
/**
* 十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)
* @param d 十進(jìn)制數(shù)
* @return 十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制的字符串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十進(jìn)制整數(shù)部分轉(zhuǎn)二進(jìn)制數(shù)
* @param d 十進(jìn)制數(shù)
* @return 十進(jìn)制整數(shù)部分轉(zhuǎn)換成二進(jìn)制的字符串
*/
public String decimal2BinaryStr_Inte(double d){
// ? ? ?return Integer.toBinaryString((int)d);
/*
* 本來利用上面的Integer.toBinaryString(int)就可以得到整數(shù)部分的二進(jìn)制結(jié)果,
* 但為了展示十進(jìn)制轉(zhuǎn)二進(jìn)制的算法,現(xiàn)選擇以下程序來進(jìn)行轉(zhuǎn)換
*/
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);
}
/**
* 十進(jìn)制小數(shù)部分轉(zhuǎn)二進(jìn)制
* @param d 十進(jìn)制數(shù)
* @return 十進(jìn)制小數(shù)部分轉(zhuǎn)換成二進(jìn)制小數(shù)的字符串
*/
public String decimal2BinaryStr_Deci(double d){
return decimal2BinaryStr_Deci(d, 0);
}
/**
* 十進(jìn)制小數(shù)部分轉(zhuǎn)二進(jìn)制
* @param d 十進(jìn)制數(shù)
* @param scale 小數(shù)部分精確的位數(shù)
* @return 十進(jìn)制小數(shù)部分轉(zhuǎn)換成二進(jìn)制小數(shù)的字符串
*/
public String decimal2BinaryStr_Deci(double d, int scale){
double deci = sub(d,(long)d);
if(deci==0){
return "";
}
//為了防止程序因所轉(zhuǎn)換的數(shù)據(jù)轉(zhuǎn)換后的結(jié)果是一個(gè)無限循環(huán)的二進(jìn)制小數(shù),因此給其一個(gè)默認(rèn)的精確度
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();
}
/**
* 提供精確的減法運(yùn)算。
* @param v1 被減數(shù)
* @param v2 減數(shù)
* @return 兩個(gè)參數(shù)的差
*/
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();
}
}
例如將十進(jìn)制數(shù)1234.5轉(zhuǎn)成二進(jìn)制數(shù)為:0100 1101 0010.1000
十進(jìn)制轉(zhuǎn)String, 和String轉(zhuǎn)十進(jìn)制的參考方法如下:
public?class?Test?{
public?static?void?main(String[]?args)?{
int?a?=?123;
//十進(jìn)制轉(zhuǎn)字符串
String?s1?=?a?+?"";//方法1:字符串拼接得到字符串
String?s2?=?String.valueOf(a);//方法2:使用String.valueOf方法轉(zhuǎn)換得到字符串
//字符串轉(zhuǎn)十進(jìn)制
int?x?=?Integer.valueOf(s1);//方法1
int?y?=?Integer.parseInt(s2);//方法2
int?z?=?new?Integer(s1);//方法3
}
}