Well done!
Be careful with the declarations. The way the varibles are stored is the same if you use 'unsigned' or not but the way it is interpreted by some operations is different. Most compilers default to a 'char' as signed which means bit 7 is used to indicate positive (0) or negative (1). That limits the range of numbers it can hold because only bit 6 through to bit 0 are left to hold the data. When you add 'unsigned' to the declaration it tells the compiler to use all the bits to hold data as it would in assembly language but you lose the ability to store negative values.
Brian.