The reversing of the encoded number comes from the following assumptions:
- Colors are often "saturated", often very close to zero or close to max, few "pastels" between 25% and 75%
- This is reinforced when a block is adjusted for minimum and maximum values : at least one sample will be 0 and another will be max (which ?)
- The "very high and very low" scenario also happens with relative/delta/differential coding where hopefully there are mostly low-amplitude values, and the positive values wrap around to very high values. Low amplitudes with negative values will use fewer bits
- The reversal at the middle is totally arbitrary. Nobody can be sure that these heuristics will happen "most of the time".
- This reversal could be under-efficient with different kinds of data sets.
- The amplitude reversal requires a subtraction in the critical datapath, which slows things down (a bit).
The "safe answer" is to say : measure and compare various scenarii. But there is a catch: with no reversal, there is still something to compute, in this case a-S.
Considering that S=a+b we get a-S=a-a-b=-b
Oh wait, we have a negative number now ?
If there is no reversal, there still is some computation ( -x = ~x +1 and incrementation is faster than full addition but not by significantly much)