Excuse me, but please explain me how a 32-bit value for difficulty can support a max difficulty of 2^224 ?
Please refer to
https://en.bitcoin.it/wiki/DifficultyBasically, its not the difficulty but the target which is stored in the blocks. The difficulty is an inverse measure of the target. When the target reaches its lowest possible value (=1), difficulty would be at its maximum, which is about 2^224.