十进制与二进制数据相互转换

/**  
目标/功能要求:  
定义一个工具类,实现下述两项功能:  
1.将任意输入的十进制数据转换为二进制形式返回;  
2.将任意输入的二进制数据转换为十进制形式返回。  
说明/提示:  
1.工具类可定义成如下结构:  
public  class  ConvertTool{  
//将一个byte/short/char/int型变量转变为二进制字符串的形式。  
public  String  conversion(int  data){……}  
//将一个长度为8/16/32位的二进制数字符串作为输入,将其转变为整数后输出。  
public  int  deconversion(String  data){……}  
}  

*/  
import  java.lang.*;  

public  class  BinaryTest  
{  
public  static  void  main(String[]  args)  
{  
int  i  =  -18;  
String  s=  "11000000010100010000000001010001";  
ConvertTool  binary  =  new  ConvertTool  ();  
System.out.println(i+"  "+binary.conversion(i));  
System.out.println(s+"  "+binary.deconversion(s));  

System.out.println(18+"  "+binary.conversion(18));  
System.out.println(1100011+"  "+binary.deconversion("1100011"));  
}  
}  
//工具类  class  ConvertTool  
class  ConvertTool  
{  
public  String  conversion(int  data)  //  十进制  转成  二进制  
{  
String  s  =  "";  
for(int  i  =  0;i<32  ;i++)  
{  
if(((1<<i)&data)==0)  
s  =  "0"+s;  
else  
s  =  "1"+s;  
}  
return  s;  
}  
/-------------------------///  二进制  转成  十进制  
public  int  deconversion(String  data)  
{  
int  j  =  data.length();  
int  de  =  0;  
if(  j<32  ||  data.charAt(0)==´0´)  //  正数  
{  
for  (int  i=j  ;  i>0  ;  i--)  
{  
if(data.charAt(i-1)==´1´)  
de  =  de  +  (int)Math.pow(2,j-i);  
}  
return  de;  
}  
else  //如果是  负数  二进制----十进制:减1  ,逐位取反,转换为十进制正数,乘-1  
{  
for  (int  i=32  ;  i>1  ;  i--)  
{  
if(data.charAt(i-1)==´1´)  
de  =  de  +  (int)Math.pow(2,j-i);  
}  
de  =  de  -1;  
String  t  =  conversion(de);  
String  s  =  "";  
//逐位取反  
for  (int  i=32  ;  i>1  ;  i--)  
{  
if(t.charAt(i-1)==´1´)  
s  =  s+"0";  
else  
s  =  s+"1";  
}  
//转换为十进制正数  
for  (int  i=j-1  ;  i>0  ;  i--)  
{  
if(s.charAt(i-1)==´1´)  
de  =  de  +  (int)Math.pow(2,j-i);  
}  
return  -de;  
}  

}  

}  
//
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值