簡體   English   中英

將十進制數轉換為二進制的C#程序

[英]C# Program that converts decimal number to 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);

一個簡單的解決方案是在開始時添加它們:

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語句

您可以將它們插入StringBuidler中,而不是立即編寫它們

var sb = new StringBuilder();
....
sb.Insert(0, counter);

然后使用該StringBuilder

var result = sb.ToString();

完成計算后可以反轉字符串

因為使用%2確定位值時從最低有效數字開始,所以生成的數字相反。 不過,您所做的並不壞,因為這是確定位的便捷方法。 您要做的就是通過收集輸出來反轉輸出,直到生成了所有位,然后以相反的順序輸出所有內容。 (我沒有嘗試編譯運行,可能有錯字)

一種簡單的解決方案是

System.Text.StringBuilder反向=新的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#。

如果我沒錯的話

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM