using System.Collections.Generic;
static void Main(string[] args)
uint[] values = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, };
for (var i = 0; i < 20; i++)
uint randomNumber = (uint)new Random().Next(4095);
var parts = FindParts(randomNumber, values);
Console.WriteLine($"{randomNumber}={string.Join('+', parts)}");
private static IEnumerable<uint> FindParts(uint number, uint []powers)
for (var i = powers.Length - 1; i >= 0; i--)