C語言中的置0和置1操作
- 置0
如果要將一個數的6位和10位置0,生成一個第6位和第10位都為0的數,拿這個數與要操作的數做(&)操作即可。生成一個第6位和第10位都為0的數可以使用1左移6位或者10位取反得到。
// test = 0b0000010001000000
unsigned short test = 1 << 6 | 1 << 10;
// 第6位和第10位置0
test &= ~(1<<6|1<<10);
- 置1
如果要將一個數的2位和3位置1,生成一個第2位和第3位都為1的數,拿這個數與要操作的數做(|)操作即可。
// test = 0b1000000000000000
unsigned short test = 32768;
// 第6位和第10位置0
test |= 1<<6|1<<10;