.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Text;

public class Program
{
	public static void Main(string[] args)
	{
		int value = Int32.Parse(Console.ReadLine());

		StringBuilder binary = new StringBuilder();

		int totalBit = 1;
		int power = 1;
		while (power <= (value / 2))
		{
			power *= 2;

			Console.WriteLine(power + " pode fazer parte de " +  value.ToString());
			totalBit++;
		}

		int total = 0;
		int bit = totalBit -1;
		while (power > 0)
		{
			if (value < power)
			{
				binary.Append("0");

				Console.WriteLine("O bit " +  bit.ToString() + " (" + Math.Pow(2, bit).ToString() + ") nao faz parte do numero");
			}
			else
			{
				binary.Append("1");

				total += power;
				value -= power;

				Console.WriteLine("O bit " +  bit.ToString() + "(" + Math.Pow(2, bit).ToString() + ") faz parte do numero. Total: " + total.ToString());
			}

			power /= 2;
			bit --;
		}

		Console.WriteLine(binary.ToString());
		Console.ReadLine();
	}
}
;