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.