/* storeBitField.c ---把一个给定的值存储到一个整数中指定的几个位,整数中的位是从右向左编号 ** dhfalive 2010.8 dh_fa@live.cn */ //#define DEBUG 0 int storeBitField(int originalValue, int valueToStore, unsigned startingBit, unsigned endingBit) { int mask = 0; int i; for (i = endingBit; i <= startingBit; i++) { mask ^= (1 << i); } #ifdef DEBUG printBits(mask); #endif originalValue = (~mask) & originalValue; #ifdef DEBUG printBits(originalValue); #endif mask &= (valueToStore << endingBit); #ifdef DEBUG printBits(mask); #endif mask |= originalValue; #ifdef DEBUG printBits(mask); printf("/n"); #endif return mask; }