當前位置:偏方大全网 - 藥品查詢 - Java十進制到二進制!

Java十進制到二進制!

將十進制數轉換為二進制數的算法如下:

1.十進制整數轉換為二進制整數

十進制整數用“除以2取余數,逆序排列”的方法轉換成二進制整數。具體方法是:將十進制整數除以2,得到壹個商和余數;將商除以2,妳會得到壹個商和壹個余數。

數,以此類推,直到商為零,然後先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列。

2.十進制十進制轉換為二進制十進制。

十進制小數轉換成二進制小數的方法是“按2舍入,按順序”。具體方法是:將小數部分乘以2得到乘積,取出乘積的整數部分,將剩余的小數部分乘以2,然後

得到壹個乘積,然後取出乘積的整數部分,以此類推,直到乘積的小數部分為零或達到要求的精度。然後將提取的整數部分按順序排列,取第壹個整數為

二進制十進制的高位有效位,後跟整數作為低位有效位。

下面是根據十進制數轉換成二進制數的算法寫的Java程序,供大家參考:

導入Java . math . bigdecimal;

公共類測試{

公共靜態void main(String[] args) {

Test t = new Test();

雙d = 8;

string s = t . decimal 2 binary str(d);

System.out.println("十進制數"+d+"轉換成二進制數:"+s ");

}

/**

*十進制數到二進制數

* @param d十進制數

* @返回十進制數轉換成二進制字符串。

*/

公共字符串decimal2BinaryStr(double d){

string result = decimal 2 binary str _ Inte(d);

result+= decimal 2 binary str _ Deci(d);

返回結果;

}

/**

*十進制整數部分轉為二進制數

* @param d十進制數

* @返回十進制整數部分轉換成二進制字符串。

*/

公共字符串decimal 2 binary str _ Inte(double d){

//返回integer . tobinary string((int)d);

/*

*整數部分的二進制結果可以用上面的Integer.toBinaryString(int)得到。

*但是為了展示十進制到二進制的算法,我們選擇下面的程序來進行轉換。

*/

字符串結果= " ";

long int =(long)d;

int index = 0;

while(true){

結果+=整數% 2;

inte = inte/2;

index++;

if(索引%4 == 0){

結果+= " ";

}

if(inte==0){

while(索引%4!=0){

結果+= " 0 ";

index++;

}

打破;

}

}

char[]c = result . tochararray();

char[]cc = new char[c . length];

for(int I = c . length;我& gt0;我- ){

cc[cc . length-I]= c[I-1];

}

返回新字符串(cc);

}

/**

*十進制小數部分轉為二進制。

* @param d十進制數

* @返回十進制分數轉換為二進制分數的字符串。

*/

公共字符串decimal 2 binary str _ Deci(double d){

返回decimal2BinaryStr_Deci(d,0);

}

/**

*十進制小數部分轉為二進制。

* @param d十進制數

* @param小數部分的精確位數

* @返回十進制分數轉換為二進制分數的字符串。

*/

公共字符串decimal2BinaryStr_Deci(double d,int scale){

double deci = sub(d,(long)d);

if(deci==0){

返回“”;

}

//為了防止程序將轉換後的數據轉換成無限循環的二進制十進制,給它壹個默認的精度。

if(scale==0){

scale = (String.valueOf(deci)。長度()-2)* 4;

}

int index = 0;

StringBuilder inteStr = new StringBuilder();

double tempD = 0.d

while(true){

if(deci==0 || index==scale){

while(索引%4!=0){

intestr . append(" 0 ");

index++;

}

打破;

}

if(index==0){

inteStr.append(" . ");

}

tempD = deci * 2;

intestr . append((int)tempD);

deci = sub(tempD,(int)tempD);

index++;

if(索引%4 == 0){

intestr . append(" ");

}

}

返回intestr . tostring();

}

/**

*提供精確的減法運算。

* @ param v 1 minend

* @param v2縮減

* @返回兩個參數之間的差值

*/

公共靜態雙接頭(雙v1,雙v2) {

BigDecimal b 1 = new BigDecimal(double . tostring(v 1));

BigDecimal B2 = new BigDecimal(double . tostring(v2));

返回b1.subtract(b2)。double value();

}

}

例如,將十進制數1234.5轉換成二進制數就是:0100101010.1000。

  • 上一篇:甘肅省制止牟取暴利實施辦法
  • 下一篇:濟寧高新區密切聯系群眾活動軌跡
  • copyright 2024偏方大全网