十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
下面是根據(jù)十進制數(shù)轉(zhuǎn)二進制數(shù)的算法所寫的一段Java程序示例代碼:
成都創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、做網(wǎng)站、赤城網(wǎng)絡(luò)推廣、小程序制作、赤城網(wǎng)絡(luò)營銷、赤城企業(yè)策劃、赤城品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供赤城建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
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
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());
}
}
}
java實現(xiàn):整數(shù)進制相互轉(zhuǎn)換的方法:
十進制轉(zhuǎn)為二進制、八進制、十六進制, 用 ?Integer.toXXXString()方法
(1)十進制轉(zhuǎn)為二進制: Integer.toBinaryString(int i);?
public static String toBinaryString(int?i):以二進制(基數(shù) 2)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。
(2)十進制轉(zhuǎn)為8進制 :Integer.toOctalString(int i);
public static String toOctalString(int?i):以八進制(基數(shù) 8)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。
(3)十進制轉(zhuǎn)為16進制: ? Integer.toHexString(int i);
public static String toHexString(int?i):以十六進制(基數(shù) 16)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。
舉例:
String?bin?=?Integer.toBinaryString(10);
String?oct?=?Integer.toOctalString(10);
String?hex?=?Integer.toHexString(10);
2.十六進制、八進制、二進制轉(zhuǎn)為十進制(有兩種方法):parseInt() 和valueOf()。
Integer.parseInt(String s,int radix);
public static int parseInt(String s,int radix) throws NumberFormatException{}使用第二個參數(shù)作為指定的基數(shù),將字符串參數(shù)解析為有符號的整數(shù);
Integer.valueOf(String s,int radix);
public static Integer valueOf(String?s, ? int?radix) throws NumberFormatException{}返回一個 Integer 對象,該對象中保存了用第二個參數(shù)提供的基數(shù)進行解析時從指定的 String 中提取的值。
舉例:
try{
int?i?=?Integer.parseInt("a",?16);
//輸出為10進制數(shù)10
System.out.println(i);
}catch?(Exception?e){
e.printStackTrace();
}
try{
//十六進制轉(zhuǎn)成十進制
String?hex?=?Integer.valueOf("FFFF",16).toString();
System.out.println(hex);
//八進制轉(zhuǎn)成十進制
String?oct?=?Integer.valueOf("12",8).toString();
System.out.println(oct);
//二進制轉(zhuǎn)十進制
String?bin?=?Integer.valueOf("0101",2).toString();
System.out.println(bin);
}catch?(Exception?e){
e.printStackTrace();
}
下面是轉(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));
Java中的進制轉(zhuǎn)換是通過基本數(shù)據(jù)類型類中的相應(yīng)方法實現(xiàn)的。舉個例子:
public class IntegerChange {
public static void main(String[] args) {
String nm = new String("445");
int n = Integer.parseInt(nm);
System.out.println("十進制表示:" + n);
System.out.println("二進制表示:" + Integer.toBinaryString(n));
System.out.println("八進制表示:" + Integer.toOctalString(n));
System.out.println("十六進制表示:" + Integer.toHexString(n));
}
}
輸出結(jié)果:
十進制表示:445
二進制表示:110111101
八進制表示:675
十六進制表示:1bd
至于八進制轉(zhuǎn)換為十進制,十六進制,二進制等等都有相應(yīng)的方法,具體的可以查看Java幫助文檔。
希望對你有所幫助。