前面那個(gè)/*---------*/填入
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、網(wǎng)絡(luò)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、余干網(wǎng)站維護(hù)、網(wǎng)站推廣。
i=toBinary(n);
后面那個(gè)/*---------*/
填入
public static int toBinary(int x){
int i = Integer.valueOf(Integer.toBinaryString(x));
System.out.println("十進(jìn)制數(shù):"+x+"\n轉(zhuǎn)換為二進(jìn)制數(shù)后為:"+i);
return i;
}
十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制分2部分,整數(shù)和小數(shù)部分。
1、整數(shù)部分
十進(jìn)制整數(shù)轉(zhuǎn)換為二進(jìn)制整數(shù)采用"除2取余,逆序排列"法。具體做法是:用2整除十進(jìn)制整數(shù),可以得到一個(gè)商和余數(shù);再用2去除商,又會(huì)得到一個(gè)商和余數(shù),如此進(jìn)行,直到商為0時(shí)為止,然后把先得到的余數(shù)作為二進(jìn)制數(shù)的低位有效位,后得到的余數(shù)作為二進(jìn)制數(shù)的高位有效位,依次排列起來(lái)。
2、小數(shù)部分
十進(jìn)制小數(shù)轉(zhuǎn)換成二進(jìn)制小數(shù)采用"乘2取整,順序排列"法。具體做法是:用2乘十進(jìn)制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù)部分,又得到一個(gè)積,再將積的整數(shù)部分取出,如此進(jìn)行,直到積中的小數(shù)部分為零,此時(shí)0或1為二進(jìn)制的最后一位?;蛘哌_(dá)到所要求的精度為止。
示例:
public?class?ErJinZhi{
public?String?trans(int?zheng){//轉(zhuǎn)整數(shù)部分
String?temp?=?"";
while(zheng!=0){//一直到整數(shù)部分為0
temp?=?(zheng%2)+temp;//余數(shù),并且拼接起來(lái)
zheng?=?zheng/2;//除2取整
}
return?temp;//余數(shù)拼起來(lái)后返回
}
public?String?trans(float?xiao){
if(xiao1){//如果大于1,則有整數(shù)部分,出錯(cuò)了
return?"false";
}
String?temp?=?"";
int?weishu?=?10;????????//小數(shù)位數(shù),精度
for(int?i=0;iweishu;i++){
xiao*=2;//乘以2
if(xiao=1){//取整
temp+="1";
xiao?=?xiao-1;//去除整數(shù)后取小數(shù)
}else{
temp+="0";//取整數(shù)位
}
}
return?temp;//返回小數(shù)二進(jìn)制數(shù)
}
public?static?void?main(String[]?args){
System.out.println("Please?input:");
Scanner?sc?=?new?Scanner(System.in);
float?n?=?sc.nextFloat();//獲取一個(gè)輸入的十進(jìn)制數(shù)
int?zheng?=?(int)n;//取整數(shù)部分
float?xiao?=?n-zheng;//取小數(shù)部分
String?temp?=?new?ErJinZhi2().trans(zheng);//整數(shù)部分轉(zhuǎn)換成二進(jìn)制
String?temp2?=?new?ErJinZhi2().trans(xiao);//小數(shù)部分轉(zhuǎn)換成二進(jìn)制
System.out.println(temp+"."+temp2);//輸出二進(jìn)制小數(shù)
}
}
下面是根據(jù)十進(jìn)制數(shù)轉(zhuǎn)二進(jìn)制數(shù)的算法所寫(xiě)的一段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);
/*
* 本來(lái)利用上面的Integer.toBinaryString(int)就可以得到整數(shù)部分的二進(jìn)制結(jié)果,
* 但為了展示十進(jìn)制轉(zhuǎn)二進(jìn)制的算法,現(xiàn)選擇以下程序來(lái)進(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è)無(wú)限循環(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)換成二進(jìn)制的算法如下:
1.給定一個(gè)數(shù);
2.根據(jù)十進(jìn)制轉(zhuǎn)換二進(jìn)制的思想:把這個(gè)數(shù)除以2若為單數(shù)則為1,為偶數(shù)則為0,直到最后一個(gè)數(shù)為1為止。所以我們要做的就是用你給定的這個(gè)數(shù)除以2,如果結(jié)果為奇數(shù)則r=1,否則r=0;如此循環(huán)下去,直到這個(gè)數(shù)〉=1。
3.然后把r的值送到一個(gè)數(shù)組里面。最后把這個(gè)數(shù)組里面的內(nèi)容從后面打印出來(lái)就可以了。
import java.util.Scanner;
public class Hi {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("請(qǐng)輸入一個(gè)十進(jìn)制需要轉(zhuǎn)換為二進(jìn)制的正整數(shù)");
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("十進(jìn)制轉(zhuǎn)換為二進(jìn)制後:");
for(int j=i-1;j=0;j--){
System.out.print(a[j]);
}
}
}
1、創(chuàng)建java類(lèi),TestNumConv.java;
2、編寫(xiě)java函數(shù),十進(jìn)制轉(zhuǎn)二進(jìn)制;
public static void decimalToBinary(int n) {
String str = "";
while (n != 0) {
str = n % 2 + str;
n = n / 2;
}
System.out.println(str);
}
3、編寫(xiě)java函數(shù),二進(jìn)制轉(zhuǎn)十進(jìn)制;
public static void binaryToDecimal(String n) {
System.out.println(Integer.parseInt(n, 2));
}
4、在main方法中,分別調(diào)用該兩個(gè)函數(shù),執(zhí)行結(jié)果滿(mǎn)足要求;
TestNumConv.decimalToBinary(123);
TestNumConv.binaryToDecimal("11011");
文章標(biāo)題:java十進(jìn)制轉(zhuǎn)化為二進(jìn)制代碼 二進(jìn)制轉(zhuǎn)化為十進(jìn)制 java
URL網(wǎng)址:http://aaarwkj.com/article12/doodidc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、品牌網(wǎng)站制作、靜態(tài)網(wǎng)站、網(wǎng)站營(yíng)銷(xiāo)、、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)