A bit can have two possible values, 1 or 0. There are 8 bits in a byte so a single byte can store 256 (2^8) different values, 0-255. This seems a waste when we need only have a few possible values that we need to store.
Let’s take the word “geocaching” as an example.
Converting this to ASCII values gives:
103 101 111 99 97 99 104 105 110 103
This would require 10 bytes to store on disk
1100111|1100101|1101111|1100011|1100001|1100011|1101000|1101001|1101110|1100111
As we only need the characters a-o, let’s limit our character set and assign them the numbers 0-15 so a=0, b=1, c=2 etc.
Our new values now map “geocaching” to
6 4 14 2 0 2 7 8 13 6
Which in binary would be:
00000110|00000100|00001110|00000010|00000000|00000010|00000111|00001000|00001101|00000110
As we are never using a number larger than 15, the first 4 bits in the byte will always be zero. Since we know this, we do not need to waste diskspace storing these extra zeros.
0110|0100|1110|0010|0000|0010|0111|1000|1101|0110
The same data that previously took 10 bytes to store now only requires 5 bytes.
01100100|11100010|00000010|01111000|11010110
Finally, we must add a header so the decompression tool knows that the blocks are 4 bits each. In this example, the data compression reduces the amount of storage required to 50% (plus 1 byte).
00000100|01100100|11100010|00000010|01111000|11010110
Now you must uncompress the following data to solve the puzzle!
00000101|01101011|10100011|00110011|10010101|00000101|10011110|00011100|11010010|01001110|11000100|01101100|
11110000|11010100|00110100|10001111|01110010|00011011|00110010|10100010|10100100|10010010|00101110|01000100|
00011000|11110011|10110001|00100101|00111100|10010010|00101110|11001001|00100010|11100111|00110100|10001111|
01110010|00011011|00110110|10100001|10100100|10011101|10011101|00110011|11000100|10000100
Please note: You should not need any special equipment. However, sturdy shoes and clothes that you don't mind getting dirty may be best.