#include <iostream>
#include <limits>
#include <cmath>
#include <bitset>
using namespace std;
int main() {
// your code goes here
unsigned x = 0b01111100010000000000000000000010;
//result shud be 10111100010000000000000000000010
unsigned pattern = 0b10111;
size_t numOfBitsToBeReplaced = 4;
size_t afterBitPos = floor(log2(x)) - numOfBitsToBeReplaced + 1;
size_t numberOfBits = (std::numeric_limits<unsigned>::digits - floor(log2(x)) - 1 + numOfBitsToBeReplaced );
//Clear "numberOfBits" MSBs
x <<= numberOfBits;
x >>= numberOfBits;
pattern <<= afterBitPos; //Position them in MSB positions.
x = x | pattern;
std::bitset<32> y(x);
cout << y;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bGltaXRzPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxiaXRzZXQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgl1bnNpZ25lZCAgeCA9IDBiMDExMTExMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMTA7CiAgIC8vcmVzdWx0IHNodWQgYmUgMTAxMTExMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMTAKCXVuc2lnbmVkIHBhdHRlcm4gPSAwYjEwMTExOwoJc2l6ZV90IG51bU9mQml0c1RvQmVSZXBsYWNlZCA9IDQ7CgkKCXNpemVfdCBhZnRlckJpdFBvcyA9IGZsb29yKGxvZzIoeCkpIC0gbnVtT2ZCaXRzVG9CZVJlcGxhY2VkICsgMTsKCXNpemVfdCBudW1iZXJPZkJpdHMgPSAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46OmRpZ2l0cyAtIGZsb29yKGxvZzIoeCkpIC0gMSArIG51bU9mQml0c1RvQmVSZXBsYWNlZCApOwoJCgkvL0NsZWFyICJudW1iZXJPZkJpdHMiIE1TQnMKCXggPDw9IG51bWJlck9mQml0czsKCXggPj49IG51bWJlck9mQml0czsKCQoJcGF0dGVybiA8PD0gYWZ0ZXJCaXRQb3M7IC8vUG9zaXRpb24gdGhlbSBpbiBNU0IgcG9zaXRpb25zLgoJCgl4ID0geCB8IHBhdHRlcm47CgkKCXN0ZDo6Yml0c2V0PDMyPiB5KHgpOwoJCgljb3V0IDw8IHk7CgkKCXJldHVybiAwOwp9