Add comments to ArithmeticCoding encode().
Generalize the final encodedvalue.
Because each message can be encoded in many different ways, I've added a new BigInteger named value value that contains the value. I no longer have to use lowValue for the final encoded value anymore.
Add maxZeroes() to ArithmeticCoder.
Finds the value within the interval with the most zeroes so that you can reduce it.
Shift zeroes out of value.
Significantly sped up encode time.