Reverse binary representation of an int (only significant bits)
You could use while loop instead of the for loop.
Thus you don't need to trim zero bits, because it will continue to loop only while there is at least one significant bit in a value.
Another advantage of this approach is that the result can be calculated using integer arithmetics only without using any kind of collections.

static int Reverse(int input)
{
    uint x = unchecked((uint)input);
    uint y = 0;
    while (x != 0)
    {
        y &lt;&lt;= 1;    // Shift accumulated result left
        y |= x &amp; 1; // Set the least significant bit if it is set in the input value
        x &gt;&gt;= 1;    // Shift input value right
    }
    return unchecked((int)y);
}


Usage example:

int t = 0x103;
Console.WriteLine(Convert.ToString(t, 2));
Console.WriteLine(Convert.ToString(Reverse(t), 2));


Result:

100000011
110000001