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