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;