#include <iostream>
#include <bitset>
using namespace std;
unsigned char custom_shift(unsigned char val, unsigned shift_bit) {
unsigned char bit_val = val & (1 << shift_bit - 1); // Get current bit value
val = val & ~(1 << shift_bit - 1); // Clear initial bit location
val = bit_val ? // Update next bit to 0 or 1
val | (1 << shift_bit) :
val & ~(1 << shift_bit);
return val;
}
int main() {
std::cout << std::bitset<8>(custom_shift(0xCA, 4)) << std::endl;
std::cout << std::bitset<8>(custom_shift(0xDA, 4)) << std::endl;
std::cout << std::bitset<8>(custom_shift(0xD2, 4)) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0c2V0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdW5zaWduZWQgY2hhciBjdXN0b21fc2hpZnQodW5zaWduZWQgY2hhciB2YWwsIHVuc2lnbmVkIHNoaWZ0X2JpdCkgewoJdW5zaWduZWQgY2hhciBiaXRfdmFsID0gdmFsICYgKDEgPDwgc2hpZnRfYml0IC0gMSk7IC8vIEdldCBjdXJyZW50IGJpdCB2YWx1ZQoJdmFsID0gdmFsICYgfigxIDw8IHNoaWZ0X2JpdCAtIDEpOyAgICAgICAgICAgICAgICAgIC8vIENsZWFyIGluaXRpYWwgYml0IGxvY2F0aW9uCgl2YWwgPSBiaXRfdmFsID8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIG5leHQgYml0IHRvIDAgb3IgMQoJICAgICAgICB2YWwgfCAoMSA8PCBzaGlmdF9iaXQpIDogCgkgICAgICAgIHZhbCAmIH4oMSA8PCBzaGlmdF9iaXQpOwoJCglyZXR1cm4gdmFsOwp9CgppbnQgbWFpbigpIHsKCXN0ZDo6Y291dCA8PCBzdGQ6OmJpdHNldDw4PihjdXN0b21fc2hpZnQoMHhDQSwgNCkpIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCBzdGQ6OmJpdHNldDw4PihjdXN0b21fc2hpZnQoMHhEQSwgNCkpIDw8IHN0ZDo6ZW5kbDsKCXN0ZDo6Y291dCA8PCBzdGQ6OmJpdHNldDw4PihjdXN0b21fc2hpZnQoMHhEMiwgNCkpIDw8IHN0ZDo6ZW5kbDsKCQoJcmV0dXJuIDA7Cn0=