For starters this format of an integer constant
0b10100110
is not standard.
Binary integer constants are valid in C++.
Also the function printf
does not support the conversion specifier B
.
In any case to output an object of the type unsigned long long int
you need to use length modifier ll
before the conversion specifier.
Instead you could use a hexadecimal integer constant like for example
unsigned long long int my_int = 0xA6;
and output it like
printf("%#.8llx\n",my_int<<40);
In this case the output will look like
0xa60000000000
Or as @chux - Reinstate Monica correctly pointed in the comment to the answer you can use the following call
printf("%#0.8llx\n",my_int<<40);
to output the prefix 0x
when the corresponding argument is equal to 0
.