用巨集交換奇偶位

2021-10-12 14:02:28 字數 843 閱讀 5221

第一次嘗試

#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的個數是偶數。如果給...