You cannot do what you are trying to do. There is no direct correspondence between some number of bits and a decimal digit.
With hexadecimal, every 4 bits corresponds to exactly 1 hex digit. That is why hex is used for computers.
One hex digit represents exactly 4 bits. Every time you add another hex digit, you add 4 bits.
Two hex digits corresponds to exactly a byte. 00h to FFh represents a value from 0 to 255.
There is no such direct correspondence between binary and decimal. If you have 4 bits, it takes 1 or 2 decimal digits to represent it (0-15) If you have 8 bits, it takes 1, 2, or 3 decimal digits to represent it, but there are 3 digit decimal values (values > 255) that you can't represent with 8 bits.
Binary Hex Decimal 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8 8 1001 9 9 1010 A 10 1011 B 11 1100 C 12 1101 D 13 1110 E 14 1111 F 15
You simply cannot convert a binary number to decimal using bit shifting and masking.