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是从高位算的,稍微改改就行了。
整数第n位取反方法
最新推荐文章于 2023-06-06 11:17:31 发布
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是从高位算的,稍微改改就行了。