第一次嘗試
#include
//在32位系統下:
//要拿出奇數字則需要&01010101010101010101010101010101 也就是十六進製制的0x55555555
//要拿出偶數字則需要&10101010101010101010101010101010 也就是十六進製制的0xaaaaaaaa
//最終將得到的結果相加也就是 |(或) 起來
#define change(num) (((num) & 0x55555555) << 1 | ((num) & 0xaaaaaaaa) >> 1)
intmain()
;//將914的二進位制排列列印出來
for(
int i =
31; i >=
0; i--
, n = n >>1)
for(
int i =
0; i <
32; i++
)printf
("\n");
int num =
change
(914);
//將914進行奇數偶數字互換之後的二進位制排列列印出來
for(
int i =
31; i >=
0; i--
, num = num >>1)
for(
int i =
0; i <
32; i++
)return0;
}
本**比較簡單,主要是考察一下巨集的一些使用細節,這些使用細節會在我的部落格程式的編譯中詳細說道。
發表於 2020-11-29 19:42
奇偶位互換
problem description 給定乙個長度為偶數字的0,1字串,請程式設計實現串的奇偶位互換。input 輸入包含多組測試資料 輸入的第一行是乙個整數c,表示有c測試資料 接下來是c組測試資料,每組資料輸入均為0,1字串,保證串長為偶數字 串長 50 output 請為每組測試資料輸出奇偶...
用巨集定義來完成位運算(置位,復位,擷取)
1 置位 置位特定位n define set nth bit x,n x 1u n 1 置位n到m位 define set bit n to m x,n,m x 0u m n 1 n 1 分析 第一步 0u m n 1 執行結果是等到0到 m n 1 位是0 m n 2 到31位是1 第二步 0u ...
奇偶校驗位
奇偶校驗位 parity bit 或校驗位元 check bit 是乙個表示給定位數的二進位制數中1的個數是奇數還是偶數的二進位制數。奇偶校驗位是最簡單的錯誤檢測檢測碼。奇偶校驗位有兩種型別 偶校驗位與奇校驗位。如果一組給定資料位中1的個數是奇數,那麼偶校驗位就置為1,從而使得1的個數是偶數。如果給...