下面是根據(jù)十進制數(shù)轉(zhuǎn)二進制數(shù)的算法所寫的一段Java程序示例代碼:
創(chuàng)新互聯(lián)公司主要從事網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沈河,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
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ù),因此給其一個默認(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();
}
/**
* 提供精確的減法運算。
* @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.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);
/*
一、java的簡介
java是由Sun Microsystems公司推出的Java面向?qū)ο蟪绦蛟O(shè)計語言(以下簡稱Java語言)和Java平臺的總稱。
Java由James Gosling和同事們共同研發(fā),并在1995年正式推出。Java最初被稱為Oak,是1991年為消費類電子產(chǎn)品的嵌入式芯片而設(shè)計的。
Java被廣泛接受并推動了Web的迅速發(fā)展,常用的瀏覽器均支持Javaapplet。另一方面,Java技術(shù)也不斷更新。Java自面世后就非常流行,發(fā)展迅速,對C++語言形成有力沖擊。
在全球云計算和移動互聯(lián)網(wǎng)的產(chǎn)業(yè)環(huán)境下,Java更具備了顯著優(yōu)勢和廣闊前景。2010年Oracle公司收購Sun Microsystems。
java中二進制的表示:
1、Java中定義兩個數(shù),然后分別打印出它們的二進制表示(例如7和-7):
System.out.println("Java二進制7:?"+Integer.toBinaryString(7));
System.out.println("Java二進制-7:?"+Integer.toBinaryString(-7));
輸出:
Java二進制7: 111
Java二進制-7: 11111111111111111111111111111001
7的二進制就是111
-7轉(zhuǎn)化二進制的過程:
(1)把-7轉(zhuǎn)化成7,二進制是 111
(2)Java中對于不滿32位的int二進制自動補齊,所以變成了 (29個0)111
(3)然后取反 ?(29個1)000
(4)然后加1 (29個1)001
擴展資料:
c語言中二進制的轉(zhuǎn)換:
用函數(shù)轉(zhuǎn)換itoa(值,數(shù)組名,進制)
#includestdio.h
#includestdlib.h
void?main()
{
char str[8];
int?i=8;
itoa(i,str,2);
printf("%s",str);
}
參考資料:
java二進制——百度百科
稍微修改了一下:
import java.math.BigInteger;
import java.lang.Math;
public class HardWork {
public static void main(String args[]) {
double L;
double m;
L=Math.log(31)*10000;
m= 15.5*(Math.pow(2,L)-1);
String a =String.valueOf((int)L);//輸入數(shù)值
BigInteger src = new BigInteger(a);
System.out.println(src.toString(2));
System.out.println(L);
System.out.println(m);
}
}
運行測試:
1000011000100011
34339.872044851465
Infinity
由java編譯器把源文件編譯成虛擬機可以識別的二進制代碼稱為字節(jié)碼。
而字節(jié)碼是由java解釋器去解釋執(zhí)行的。
當(dāng)前標(biāo)題:java2進制代碼的簡單介紹
當(dāng)前路徑:http://jinyejixie.com/article30/hsdcso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計、搜索引擎優(yōu)化、微信公眾號、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)