/**
目标/功能要求:
定义一个工具类,实现下述两项功能:
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;
}
}
}
//
目标/功能要求:
定义一个工具类,实现下述两项功能:
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;
}
}
}
//