1. 程式人生 > >C++中怎麼把一個十進位制數的某一個二進位制位改為0

C++中怎麼把一個十進位制數的某一個二進位制位改為0

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是從高位算的,稍微改改就行了。