1.问题描述
对于一个五位的01串,每一位都可能是0或者1,一共有32种可能,他们的前几个是
00000
00001
00010
00011
。。。。。。。。
11111
请从小到大输出32种01串(用五位二进制数输出0~31)
2 解答
方法1:
直接输出:
Console.Write(00000);
Console.Write(00001);
....................................
Console,Write(11111);
方法2:
class ToBinary
{
public void ToBinaryOne()
{
for (int i = 0; i < 32; ++i)
{
int[] a = new int[5];
int temp = i;
int index = 4;
while (temp >= 1)
{
a[index--] = temp % 2;
temp = temp / 2;
}
for (int idx = 0; idx < 5; ++idx)
{
Console.Write(a[idx]);
}
Console.WriteLine();
}
}
}
方法3:
class Class1
{
public void ToBinary()
{
int[] arr = { 0, 1 };
int count = 1;
for (int a = 0; a < 2; a++)
{
for (int b = 0; b < 2; b++)
{
for (int c = 0; c < 2; c++)
{
for(int d = 0; d < 2; d++)
{
for (int e = 0;e< 2; e++)
{
Console.Write((count++)+":"+arr[a]+arr[b]+arr[c]+arr[d]+arr[e]);
Console.WriteLine();
}
}
}
}
}
}
}
以上是通过c#语言来实现的,用java的话还可以通过二进制转换函数toBinaryString()来实现上边的算法。
具体如下:
方法1:
class ToBinary
{
public static void main(String[] args)
{
for (i=0;i<32 i++; )
{
String result=Integer.toBinarystring(i);
int num=result.length();
for (int j=0;j<5-num;j++ )
{
result="0"+result;
}
System.out.Println(result);
}
}
}
方法2:
class ToBinaryOne
{
public static void main(String[] args)
{
for (int i=0;i<32 i++; )
{
String str=Integer.toBinaryString(i);
switch(str.length)
{
case 1:str="0000"+str ;
break;
case 2 :str="000"+str;
break;
case 3:str="00"+str;
break;
case 4:str="0"+str;
break;
}
System.out.println(str);
}
}
}
其输出的结果如下: