1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
#include <stdio.h> #include <stdlib.h> int stare_bit_field(int original_value, int value_to_store, unsigned starting_bit, unsigned ending_bit) { unsigned int i; unsigned make = 0; for (i = starting_bit; i >= ending_bit; i--) { make |= 1 << i; } original_value = (~make)&original_value; value_to_store <<= ending_bit; value_to_store &= make; original_value |= value_to_store; return original_value; } int main() { int original_value; int value_to_store; unsigned starting_bit; unsigned ending_bit; printf("请输入 original_value, value_to_store, starting_bit, ending_bit:"); scanf("%x %x %x %x",&original_value, &value_to_store, &starting_bit, &ending_bit); original_value = stare_bit_field(original_value, value_to_store, starting_bit, ending_bit); printf("%x", original_value);
system("pause"); return 0; }
|