In C why is there no standard specifier to print a number in its binary format, sth like %b. Sure, one can write some functions /hacks to do this but I want to know why such a simple thing is not a standard part of the language.
Was there some design decision behind it? Since there are format specifiers for octal %o and %x for hexadecimal is it that octal and hexadecimal are somewhat “more important” than the binary representation.
Since In C/C++ one often encounters bitwise operators I would imagine that it would be useful to have %b or directly input a binary representation of a number into a variable (the way one inputs hexadecimal numbers like int i=0xf2 )
Note: Threads like this discuss only the ‘how’ part of doing this and not the ‘why’
The main reason is ‘history’, I believe. The original implementers of
printf()et al at AT&T did not have a need for binary, but did need octal and hexadecimal (as well as decimal), so that is what was implemented. The C89 standard was fairly careful to standardize existing practice – in general. There were a couple of new parts (locales, and of course function prototypes, though there was C++ to provide ‘implementation experience’ for those).You can read binary numbers with
strtol()et al; specify a base of 2. I don’t think there’s a convenient way of formatting numbers in different bases (other than 8, 10, 16) that is the inverse ofstrtol()– presumably it should beltostr().