http://qs321.pair.com?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.