Hi everyone!! Usually bits are maniuplated with bitwise operators... I recall CircleMUD doing this quite nicely and you can set up some nice macros to make it easy... For example, I think (I could be wrong), to set a bit you use the bitwise OR, like this: foo |= (1<<5); This'll set the fifth bit... To test it you can use bitwise AND: if (foo & (1<<5)) And you can set up macros to do all of this nicely... To clear a bit, I think you have to use bitwise NOT, which is the ~ so to clear the fifth bit, I think you say: foo &= (~(1<<5)) Okay, I extracted CircleMUD just now, here are its marcros: #define IS_SET(flag,bit) ((flag) & (bit)) #define SET_BIT(var,bit) ((var) |= (bit)) #define REMOVE_BIT(var,bit) ((var) &= ~(bit)) #define TOGGLE_BIT(var,bit) ((var) = (var) ^ (bit)) Maybe that'll help.... Of course you won't be using bitfields if you use these macros, so these could be totally useless... But now you've learned about bitwise operators, unless you know about them already :) Well, have a nice day :) -Brett