http://www.perlmonks.org?node_id=1146780


in reply to Converting negative number to binary with specific width

The problem is that the b format is for unsigned integers only, so your -1 gets turned into an unsigned int and printing that overflows your field width, giving you lots of ones.The help for sprintf says :-

%b an unsigned integer, in binary

BTW sprintf always prints the entire number even if it's bigger than the field width, so this is never going to work for 10 bit binary.

Replies are listed 'Best First'.
Re^2: Converting negative number to binary with specific width
by pjkang7 (Novice) on Nov 05, 2015 at 16:52 UTC

    Thanks, I simply did want -1 to show up as 1111111111... of width 10. which, in unsigned int, it would mean infinite (hence lots of ones...) but I just wanted to cut it at ten 1s.

    I did not know sprintf always print the entire number. Thanks.