# Difficulty target representation in bitcoin wiki

The bitcoin wiki describes difficulty target representation as follows:

How is difficulty stored in blocks? Each block stores a packed representation (called "Bits") for its actual hexadecimal target. The target can be derived from it via a predefined formula. For example, if the packed target in the block is 0x1b0404cb, the hexadecimal target is

0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000

Note that the 0x0404cb value is a signed value in this format. The largest legal value for this field is 0x7fffff. To make a larger value you must shift it down one full byte. Also 0x008000 is the smallest positive valid value.

Why `0x008000` is the smallest positive valid value?

To explain that, let's look at the code that unpacks the compact format into a 256 bit int.

``````arith_uint256& arith_uint256::SetCompact(uint32_t nCompact, bool* pfNegative, bool* pfOverflow)
{
int nSize = nCompact >> 24;
uint32_t nWord = nCompact & 0x007fffff;
if (nSize <= 3) {
nWord >>= 8 * (3 - nSize);
*this = nWord;
} else {
*this = nWord;
*this <<= 8 * (nSize - 3);
}
if (pfNegative)
*pfNegative = nWord != 0 && (nCompact & 0x00800000) != 0;
if (pfOverflow)
*pfOverflow = nWord != 0 && ((nSize > 34) ||
(nWord > 0xff && nSize > 33) ||
(nWord > 0xffff && nSize > 32));
return *this;
}
``````

The first 8 bits here are the exponent. The next bit is a sign bit, with 1 being negative. The next 23 bits are the mantissa.

So, `0x00800000` is equal to `0x00000000`.

• Yes `0x00800000` is equal to `0x00000000`, but I think the wiki is referring to the part after the Bits removed the first byte, and it says `0x008000` instead of `0x800000` is the smallest positive valid value. – hello.wjx Sep 22 '16 at 12:03
• 0x008000 is also equal to zero, because it is right shifted three times. For that matter, 0x01008000 would equal zero too. – Nick ODell Sep 22 '16 at 17:57
• Then 0x007000, 0x006000 ... all equal to zero, and all are smaller than 0x008000 – hello.wjx Sep 23 '16 at 15:08