protected void unsigned8(final int size, int value) throws IOException {
        requireValidSizeUnsigned8(size);
        final int required = size - available;
        if (required > 0) {
            unsigned8(available, value >> required);
            unsigned8(required, value);
            return;
        }
        octet <<= size;
        octet |= (value & ((1 << size) - 1));
        available -= size;
        if (available == 0) {
            write(octet);
            count++;
            octet = 0x00;
            available = Byte.SIZE;
        }
    }
protected void unsigned8 ( final int size , int value ) throws IOException { requireValidSizeUnsigned8 ( size ) ; final int required = size - available ; if ( required > 0 ) { unsigned8 ( available , value > > required ) ; unsigned8 ( required , value ) ; return ; } octet <<= size ; octet |= ( value & ( ( 1 << size ) - 1 ) ) ; available -= size ; if ( available == 0 ) { write ( octet ) ; count ++ ; octet = 0x00 ; available = Byte . SIZE ; } }
Writes an unsigned value whose size is, in maximum, {@value Byte#SIZE}.

@param size  the number of lower bits to write; between {@code 1} and {@value Byte#SIZE}, both inclusive.
@param value the value to write
@throws IOException if an I/O error occurs.