MiniMU9 v2 code questions.

Hi there.
I'm trying to write my own module to interface with the MiniMU9 v2, in C, for various reasons.

Everything seems to be working so far, but there are slight variations on the results, which is the reason for these questions.

First of all, the documentation for the LSM303 and the L3GD20 clearly state that these sensors represent their output in 2's complement, but nowhere have I found any code handling that. I found it handled once on another code from some guy, who wrote the entire thing in avr assembly.

Also, for some reason, the function in LSM303.cpp that reads the magnetometer values, ( readMag ) does not seem to turn on the last bit ( the auto-increment address register). So, theoretically, it should always be reading the same register 6 times, right?
This is the respective snippet

Wire.write((_device == device_D) ? translated_regs[-OUT_X_L_M] | (1 << 7) : translated_regs[-OUT_X_H_M]);

How this this work?

Thank you.