Перевод из двоичной системы счисления в десятичную

Рассмотрим преобразование целого положительного двоичного числа в десятичную систему счисления.

Для преобразования числа из двоичной системы в десятичную используется таблица:

Значение 2048 1024 512 256 128 64 32 16 8 4 2 1
Степень двойки 211 210 29 28 27 26 25 24 23 22 21 20

Рассмотрим пример преобразования числа 101112. Для перевода в десятичное запишите его как сумму по разрядам следующим образом:

1101112 => 1 * 25 + 1 * 24 + 0 * 23 + 1 * 22 + 1 * 21 + 1 * 20 = 32 + 16 + 4 + 2 + 1 = 55

1101112 = 5510

Программа для перевода двоичного числа в десятичную систему счисления

using System;
using System.Text;

class Program
{
    static uint BinaryToDecimal(string binaryNumber)
    {
        var exponent = 0;
        var result = 0u;
        for (var i = binaryNumber.Length - 1; i >= 0; i--)
        {
            if (binaryNumber[i] == '1')
            {
                result += Convert.ToUInt32(Math.Pow(2, exponent));
            }
            exponent++;
        }

        return result;
    }

    static void Main(string[] args)
    {
        Console.OutputEncoding = Encoding.UTF8;
        Console.Write("Введите число в двоичной системе: ");
        var binNum = Console.ReadLine();
        var decNum = BinaryToDecimal(binNum);
        Console.WriteLine("{0} => {1}", binNum, decNum);
        Console.ReadLine();
    }
}

Метод BinaryToDecimal можно оптимизировать, заменив возведение в степень на умножение:

static uint BinaryToDecimal(string binaryNumber)
{
    var exp = 1u;
    var result = 0u;
    for (var i = binaryNumber.Length - 1; i >= 0; i--)
    {
        if (binaryNumber[i] == '1')
        {
            result += exp;
        }
        exp *= 2;
    }

    return result;
}

Смотрите также: