private UInt16 leastSignificantWord = 1;
private UInt16 mostSignificantWord = 1;
UInt32 result = (leastSignificantWord << 16) + mostSignificantWord;
You have 2 UInt16 (16 bit and 16 bit)
one 0010 1011 1010 1110
and second 1001 0111 0100 0110
If you will read this 2 UIn16 as one UInt32 you will have 0010 1011 1010 1110 1001 0111 0100 0110
So, (leastSignificantWord << 16)
gives you 0010 1011 1010 1110 0000 0000 0000 0000
and this plus mostSignificantWord
gives you 0010 1011 1010 1110 1001 0111 0100 0110
These can be helpful
http://msdn.microsoft.com/en-us/library/a1sway8w.aspx
What are bitwise shift (bit-shift) operators and how do they work?