I'm not quite sure what your expectations are here. The intermediate int decimal values will in no way correlate to the original long decimal value. If they are only being used as a necessary step to transfer the entire data, then that doesn't matter.
What matters is that the bit representation is maintained.
Say you have a long value of (just for example) 1,582,081.
It's binary representation would be:
00000000 00011000 00100100 00000001
If you then assign that value to two ints with bitwise shifting, you would end up with
high int 00000000 00011000
low int 00100100 00000001
If you then properly recompose that back into a new long, that new long will have the same decimal value as the previous one (assuming the binary representation of that decimal value is the same across any platform transitions).
You could use unsigned ints for your intermediate variables and it wouldn't make a difference. You could even use 4 bytes or chars instead.
With -1 as ValueLong I read on serial monitor:
L = 11111111111111111111111111111111
H = 11111111111111111111111111111111
That looks completely correct. Signed ints are stored in a twos complement format. Google it for more info on how twos complement works, and why it's an ideal format to use for signed ints.