Look at the code below from android bitcoin wallet:
proofOfWorkLimit = Utils.decodeCompactBits(0x1d00ffffL);
And look at the code from bitcoin qt wallet:
static CBigNum bnProofOfWorkLimit(~uint256(0) >> 32);
I assume that in second case ProofOfWorkLimit is 32 "0" and 224 "1" (000000...000111111111....11111111)?
So I don't have an idea how to get first case "0x1d00ffffL" from second case? In binary "0x1d00ffffL" is 11101000000001111111111111111.
P.S. I have looked in uint256.h. It wasn't helpful.