將整數的第n位清零或置1,其他位不變
阿新 • • 發佈:2019-01-02
假設有一個整數為x,編寫兩個函式將x的二進位制位的第n位置1或清零,其他位不變
如有x=10,二進位制表示為:00000000 00000000 00000000 00001010,二進位制位的最右邊稱為第一位,比如將第二位的1清為0,則為:00000000 00000000 00000000 00001000 = 8,
將第三位置為1,則為: 00000000 00000000 00000000 00001110 = 14。
程式碼實現為:
-
#include <iostream>
-
using namespace std;
-
#define IBS(n) 0x01<<(n-1)
-
void Set_N_To_1(int &x, int n)
-
{
-
x |= IBS(n);
-
}
-
void Clear_N_To_0(int &x, int n)
-
{
-
x &= ~IBS(n);
-
}
-
int main()
-
{
-
int x = 10;
-
Set_N_To_1(x, 3);
-
cout<<x<<endl;
-
x = 10;
-
Clear_N_To_0(
-
cout<<x<<endl;
-
return 0;
- }