As you've probably heard of, files are saved on the computer as ones and zeros, or on and off, called bits. I.e. a bit is one position in a memory that is either on or off. In most computers, these are grouped into bytes, which are 8 bits long.
The decimal system has a base of 10, which means we have 10 different digits (0-9), and after that we have a new level that is worth 10 (10 to the power of 1) instead of 1 (10^0). The third digit from the right is worth 100 (10^2), and the forth is worth 1000 (10^3). Well, the decimal system isn't that hard.
When working on computers however you only have 2 different digits, 1 and 0, which is why it is called binary (bi=2).Each new level is therefore worth twice as much as the previous one. First one is worth 1 (2^0) multiplied with the digit in that level ( i.e. 1 x 0, or 1x 1), the second is worth 2 (2^1), the third is worth 4 (2^2).
Examples:
1 = ...00000001
2 = ...00000010
3 = ...00000011
4 = ...00000100
8 = ...00001000
16318421 (Read each column from top downwards)
2426
8
Since a byte contains 8 bits, and each bit could be 1 of 2 values, you can store 256 (2^8) different combinations in a byte, or all numbers between 0 and 255.
There's also the hexadecimal (hex=6, deca=10 -> 16)system, where the base is 16. This means the next level doesn't come until you write 16. Instead of writing 10 - 15, the letters A-F are used instead. The reason why this is used is because 2 digits in the hexadecimal system represent one byte. I.e. 2^8 = 16^2 = 256.
Examples:
0=0x00 = ...00000000
1= 0x01 = ...00000001
3= 0x03 = ...00000011
15= 0x0F = ...00001111
256=0xFF = ...11111111
As you might see, the left digit in the hexadecimal number represents the 4 left bits in a byte, and the right digit in a hex number represents the four right bits in a byte. It's therefore pretty easy to convert between the numbers compared to converting between binary and decimal numbers.
Hexediting therefore is when you edit a file in "binary mode", but instead of editing each bit in a byte, you edit a two-digit hexadecimal number. To do this, you need to have a program that can show a file as hexadecimal numbers and that allow you to change the numbers. I usually use Visual C++ to do this, but I'm sure there are better smaller and free programs for this purpose on the net.
OT: When a program reads the information in a file some data though, is stored in more than 1 bytes though. E.g. two bytes can store totally 65536 different combinations, and three bytes more than 16 million combinations. In a hexediting program this is still viewed as three separate bytes. A byte, or many bytes, can also be signed, which means that the left digit is used to determine whether the number is negative or positive, but still, this can't be seen while hexediting the file, it's the file that interprets it differently.
Text on a computer is also saved as bytes, where each character represents a byte. The number a character is called that characters ASCII-code. E.g. the character 'A' has an ASCII-code that is 65 (0x41), and the character 'a' has an ASCII-code of 97 (0x61). The numbers '0'-'9' written as text has the ASCII codes from 48 to 57 (0x30-0x39). There are other standards for writing text as binary code, one is called Unicode, which IIRC uses two bytes for each character, and therefore allow more than 65000 different characters while ASCII only offers 256 different characters.
I hope it's fairly correct, but please tell if I've got something wrong.