package com.lizhihui.cn;
/**
* 十进制数据和二进制进行转换
* @author 李智慧
* @date Mar 24, 2012
* @company 广东南航易网通电子商务有限公司
*/
public class TransLate {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String rString = "1101011101";
int n = getSJZ(rString);
System.out.println(rString+"得到的十进制数值是:"+n);
String result = getEJZ(n);
System.out.println(n+"得到的二进制数值是:"+result);
}
/**
* 从二进制获取十进制值
* @param string
* @return
*/
private static int getSJZ(String string){
int z = 0;
char[] c = string.toCharArray();
for(int j = 0;j < c.length; j ++){
int q = Integer.parseInt(c[j]+"");
z += q*getCF(c.length-1-j);
}
return z;
}
/**
* 从十进制获取二进制数值
* @param z
* @return
*/
private static String getEJZ(int z){
String result = "";
int num;
int ys;
int len;
if(z < 2){
result = z +"";
}else {
while(true){
ys = z % 2;
len = z;
z = z / 2;
if(z == 1){
if(len == 3){
result = 11 + result;
}else if(len == 2){
result = 10 + result;
}
break;
}else {
result = ys + result;
}
}
}
return result;
}
/**
* 2的n次方值
* @return
*/
public static int getCF(int n){
int result = 0;
if(n == 0){
result = 1;
}else {
result = getCF(n-1)*2;
}
return result;
}
}