/* * C Program to Replace Bits in Integer from Specified Positions from * Another Integer */ #include void replace_bits(int, int, int, int); int main() { int number_x, number_y, start_pos, end_pos; printf("\nEnter the number x in hexa decimal "); scanf("%x", &number_x); printf("\nEnter the number y in hexa decimal"); scanf(" %x", &number_y); printf("\nEnter value for a"); scanf("%d", &start_pos); printf("\nEnter value for b"); scanf("%d", &end_pos); replace_bits(number_x, number_y, start_pos, end_pos); } /* * Replace bits in first number from specified position with bits in second number */ void replace_bits(int number_x, int number_y, int start_pos, int end_pos) { int i, shift_y, ybit; long int temp, t; /* * Replace the corresponding x bits by y bits */ for (i = start_pos; i <= end_pos; i++) { shift_y = number_y >> i; ybit = shift_y & 1; if (ybit == 1) { temp = 1 << i; number_x = number_x | temp; } if (ybit == 0) { t = 0XFFFFFFFF; temp = 1 << i; start_pos = t ^ temp; number_x = number_x & start_pos; } } printf("%x", number_x); }