Encoding and decoding are two opposite processes. Encoding is done with the intension of increasing the usability of data in different systems and to reduce the space required for storage, while decoding converts encoded information back in to its original format. Encoding is done using publicly available methods and it can be easily reversed (decoded). For example, ASCII encoding is just a mapping between characters and numbers. So decoding it is straight forward. But decoding messages sent via a noisy channels will not be straight forward, because the message could be tampered with noise. In such instances decoding involves complex methods that are used to filter out the effect of noise in the message.