Converting 10 bit (2:8) value to 14 bit (6:8) result
Assuming that you do not need to have the result sign extended AND that your goal is simply to normalize the 10-bit input to a 14-bit result then here is code that should do what you require. 

// these two byte variables have the 2:8 input values
unsigned char val10_2;
unsigned char val10_8;

// this variable will be used as a working unsigned integer (guessing as 16-bit)
unsigned int temp16;

// these two byte variables will have the 6:8 result values
unsigned char reg14_6;
unsigned char reg14_8;

// combine inputs into an unsigned integer
temp16 = ((val10_2 &amp; 0x03) &lt;&lt; 8) | val10_8;

// normalize 10-bit value to 14-bit
temp16 = temp16 &lt;&lt; 4;

// extract the final result out to the two 8-bit register values
reg14_6 = (temp16 &gt;&gt; 8) &amp; 0xFF;
reg14_8 = temp16 &amp; 0xFF;


I've included some extra masking of the values in the last two assignments that that may not be strictly necessary and any decent optimizing compiler will eliminate extra steps for you.