For MSB aligned data the position of the sign is fixed. However, for LSB aligned data the position of the sign, if any, depends on the sign extension policy. CBF-8 has two LSB policy alternatives: unsigned and twos-complement sign extended. With the unsigned policy no bit is negative. The first digit in a stream has a value between 0 and 63. All zeros preceding a value between 0 and 63 are therefore redundant and may be discarded. The following LSB aligned policies are unsigned.
- Unsigned Policies:
68 ?
Boolean policy
70 +
Unsigned integral value policy
71 @
Indexed element policy
72 *
Array dimension policy
The policy for signed integral data is the twos-complement sign extension policy.
- Twos-Complement Sign-Extended Policy:
69 -
Twos-complement sign-extended integral value policy
With this policy the most significant bit of the first digit has a negative weight of -32. Thus, first digit values between 0 and 31 are non-negative whereas the value 64 is subtracted from values in the range 32 to 63 to yield a value between -32 and -1. This means the digit z is the value -1. If the leading digit is a z and the successor digit is a digit between W and z, then the leading digit is redundant and may be discarded. Similarly if the leading digit is 0 and the successor digit is a digit between 0 and V, then the leading 0 is redundant.
By discarding redundant digits, CBF-8 adapts the length of the byte stream to the size of the number. There is no byte, short, int, long
; there is only a stream of bytes where the stream length is the fewest number of base-64 digits that can hold the integral value.