C#将十进制数转换为二进制数的程序

时间:2013-08-22 20:54:38

标签: c# binary

所以,我必须创建一个程序,将十进制数转换为二进制并打印它,但不使用Convert。我得到了一个点,我可以打印出数字,但它是相反的(例如:12出现为0011而不是1100),任何人都知道如何解决这个问题?这是我的代码:

        Console.Write("Number = ");
        int n = int.Parse(Console.ReadLine());
        string counter = " ";


        do
        {

            if (n % 2 == 0)
            {                  
                counter = "0";
            }

            else if (n % 2 != 0)
            {
                 counter = "1";
            }

            Console.Write(counter);

            n = n / 2;
        }
        while (n >= 1);

5 个答案:

答案 0 :(得分:1)

简单的解决方案是在开头添加它们:

Console.Write("Number = ");
int n = int.Parse(Console.ReadLine());
string counter = "";

while (n >= 1)
{
   counter = (n % 2) + counter;
   n = n / 2;
}
Console.Write(counter);

你实际上甚至不需要if语句

答案 1 :(得分:0)

您可以将它们插入StringBuidler

,而不是立即编写它们
var sb = new StringBuilder();
....
sb.Insert(0, counter);

然后使用StringBuilder

var result = sb.ToString();

答案 2 :(得分:0)

完成计算后可以反转字符串

答案 3 :(得分:0)

您以相反的顺序生成数字,因为当您使用%2确定位值时,您将从最不重要的数字开始。你正在做的事情并不坏,因为它是确定比特的便捷方式。您所要做的就是通过收集输出来反转输出,直到您生成所有位然后以相反的顺序输出所有内容。 (我没有尝试编译和运行,可能有拼写错误)

一个简单的解决方案是

System.Text.StringBuilder reversi = new System.Text.StringBuilder();

然后在你的代码中替换

Console.Write(counter);

reversi.Append(counter);

最后添加循环结束,添加如下代码

string s = reversi.ToString();
for (int ii = s.Length-1; ii >= 0; --ii)
{
  Console.Write(s[ii]);
}

有更好的方法可以做到这一点,但这很容易理解为什么它修复了你的代码 - 看起来你正在尝试学习C#。

答案 4 :(得分:0)

如果我没弄错的话

int value = 8;
string binary = Convert.ToString(value, 2);