あ、すみません。↓が分からないです。

for (i=1; i<needed; ++i)
if (!(l>>(i*8)))
break;