Hoffman coding c language information theory