The Print class prints the values binary using this method:

size_t Print::printNumber(unsigned long n, uint8_t base) {

char buf[8 * sizeof(long) + 1]; // Assumes 8-bit chars plus zero byte.

char *str = &buf[sizeof(buf) - 1];

*str = '\0';

// prevent crash if called with base == 1

if (base < 2) base = 10;

do {

unsigned long m = n;

n /= base;

char c = m - base * n;

*--str = c < 10 ? c + '0' : c + 'A' - 10;

} while(n);

return write(str);

}

As you can see, it stops adding characters as soon as there are only zeros left, so leading zeros are omitted. Count the ones, in the first case you get 16, in the second case you get 15.