整数第n位取反方法

来源:互联网 发布:caxa方块线切割编程 编辑:程序博客网 时间:2024/06/06 04:10
int change(int x, int n) { // 这里的n都是从0开始的    // 高位的话插一句 n = sizeof(int)*8-n-1    return x & ~(1 << n); }先把1左移n位,得到00010000形式的一个数字,然后取反得到11101111形式的数字,然后和原来的数进行“位与”操作。与0得0,与1不变。所以第n位就变成0其他位不变。如果你的n是从高位算的,稍微改改就行了。