下面是根據(jù)十進制數(shù)轉(zhuǎn)二進制數(shù)的算法所寫的一段Java程序示例代碼:
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、微信小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了開陽免費建站歡迎大家使用!
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("十進制數(shù)"+d+"轉(zhuǎn)成二進制數(shù)為:"+s);
}
/**
* 十進制數(shù)轉(zhuǎn)二進制數(shù)
* @param d 十進制數(shù)
* @return 十進制數(shù)轉(zhuǎn)換成二進制的字符串
*/
public String decimal2BinaryStr(double d){
String result = decimal2BinaryStr_Inte(d);
result += decimal2BinaryStr_Deci(d);
return result;
}
/**
* 十進制整數(shù)部分轉(zhuǎn)二進制數(shù)
* @param d 十進制數(shù)
* @return 十進制整數(shù)部分轉(zhuǎn)換成二進制的字符串
*/
public String decimal2BinaryStr_Inte(double d){
// ? ? ?return Integer.toBinaryString((int)d);
/*
* 本來利用上面的Integer.toBinaryString(int)就可以得到整數(shù)部分的二進制結(jié)果,
* 但為了展示十進制轉(zhuǎn)二進制的算法,現(xià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);
}
/**
* 十進制小數(shù)部分轉(zhuǎn)二進制
* @param d 十進制數(shù)
* @return 十進制小數(shù)部分轉(zhuǎn)換成二進制小數(shù)的字符串
*/
public String decimal2BinaryStr_Deci(double d){
return decimal2BinaryStr_Deci(d, 0);
}
/**
* 十進制小數(shù)部分轉(zhuǎn)二進制
* @param d 十進制數(shù)
* @param scale 小數(shù)部分精確的位數(shù)
* @return 十進制小數(shù)部分轉(zhuǎ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é)果是一個無限循環(huán)的二進制小數(shù),因此給其一個默認的精確度
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 被減數(shù)
* @param v2 減數(shù)
* @return 兩個參數(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();
}
}
例如將十進制數(shù)1234.5轉(zhuǎn)成二進制數(shù)為:0100 1101 0010.1000
下面是轉(zhuǎn)換的方法
int
n1
=
14;
//十進制轉(zhuǎn)成十六進制:
Integer.toHexString(n1);
//十進制轉(zhuǎn)成八進制
Integer.toOctalString(n1);
//十進制轉(zhuǎn)成二進制
Integer.toBinaryString(12);
//十六進制轉(zhuǎn)成十進制
Integer.valueOf("FFFF",16).toString();
//十六進制轉(zhuǎn)成二進制
Integer.toBinaryString(Integer.valueOf("FFFF",16));
//十六進制轉(zhuǎn)成八進制
Integer.toOctalString(Integer.valueOf("FFFF",16));
//八進制轉(zhuǎn)成十進制
Integer.valueOf("576",8).toString();
//八進制轉(zhuǎn)成二進制
Integer.toBinaryString(Integer.valueOf("23",8));
//八進制轉(zhuǎn)成十六進制
Integer.toHexString(Integer.valueOf("23",8));
//二進制轉(zhuǎn)十進制
Integer.valueOf("0101",2).toString();
//二進制轉(zhuǎn)八進制
Integer.toOctalString(Integer.parseInt("0101",
2));
//二進制轉(zhuǎn)十六進制
Integer.toHexString(Integer.parseInt("0101",
2));
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)化的十進制數(shù)
*?@param?b?要轉(zhuǎ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());
}
}
}
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@SuppressWarnings("unchecked")
public class FileUtil implements Comparator{
public static void main(String[] args) throws Exception{
File file = new File("f:/f1.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String rl = null;
StringBuffer bf = new StringBuffer();
StringBuffer num2 = null;
int num10 = 0;
while(( rl = br.readLine()) != null)
{
rl = rl.trim();
num10 = Integer.parseInt(rl);
num2 = new StringBuffer();
while(num10 0){
num2.insert(0, num10%2);
num10 /=2;
}
bf.append(num2).append("\r\n");
}
br.close();
BufferedWriter out = new BufferedWriter(new FileWriter(new File("f://f2.txt")));
out.write(bf.toString());
out.flush();
out.close();
}
public int compare(Object a1, Object a2)
{
String s1 = (String)a1;
String s2 = (String)a2;
for(int i=0; i(Math.min(s1.length(), s2.length())); i++)
{
if(s1.charAt(i) s2.charAt(i))
return 1;
else if(s1.charAt(i) s2.charAt(i))
return -1;
}
return s1.length()s2.length()?1:(s1.length()s2.length()?-1:0);
}
}
1、用Integer.toHexString方法即可將十進制裝成十六進制。
package com.test;
public class Test {
public static void main(String[] args) {
int i = 123;
System.out.println(Integer.toHexString(i));
}
}
2、運行結(jié)果如下十進制的123轉(zhuǎn)化成十六進制的7b
3、Integer.toHexString方法返回的結(jié)果是字符串。
4、直接表達16進制,在JAVA里面可以在數(shù)字前加"0x",像這樣
int j = 0x7b;
System.out.println(Integer.decode("0x7b"));