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。