The PICaxe maths might even be a little easier without those annoying "*16"s or "/ 16"s necessitated by the 20-bit to 16- or 24-bit data-field conversions;
It's even easier than that, there is no conversion needed if you just use 16 bits.
Chip holds a 20 bit value in 3 bytes, with 4 unused bits below the LSB.
hi2cin regnum,(b3,b2,b1) ' Read 3 bytes from chip. Note the order of reading.
MyResult = w1 ' Use 2 MSB bytes for result. w1 = b3 as MSB, b2 as LSB. Ignore the last byte, b1, with the last 4 bits, it's too small to matter.
This gets the top 16 bits as the result in w1, in sensible units, as long as the calibration is correct.
If the result is a Two's Complement value, just test for > 32767.
e.g. if w1 > 32767 then ' Test for -ve
w1 = 0 - w1 ' Convert from -ve
sertxd("-",#w1)
else ' Value is +ve
sertxd("+",#w1)
endif
( In effect, the result is only 15 bit resolution with 1 bit sign. However, even 15 bit resolution is good enough for the vast majority of applications. If you need the full 20 bit resolution then you wouldn't use a PICAXE, or a $10 breakout board and shunt. )
There are some registers that are bigger, with 24 or 40 bit values, such as POWER, ENERGY, CHARGE. On these you may need to see more resolution at low values, but there are tricks to manage these without using wide-bit calculations.
Cheers,
Buzby