0x30
является шестнадцатеричным, а 0000000000110000
- двоичным.Если вы сдвинете 4 бита, вы получите свой результат 0x300
или 0000001100000000
.
Чтобы ответить на ваши изменения, unsigned int
не займет 1 byte
.Он занимает столько же байтов, сколько int
.Что в вашем случае это, вероятно, 4 байта или 32 бита.
Причина, по которой номер отображается с 2 или 3 hex
цифрами, потому что 0 в начале не печатаются.Но на самом деле это число 0030(hex)
.
В любом случае, вы можете проверить размер, используя sizeof
.
РЕДАКТИРОВАТЬ: Если вы хотите взять 1 байт, см. Ответ Ришикеша.