C語言實現陣列倒置(異或運算)

2021-07-10 17:13:15 字數 654 閱讀 2227

分析:指定了陣列長度,而不增加空間成本則不能新建新的陣列,實現陣列倒置可以借助第三變數互換陣列元素,但此方法也不是最高效的,可以採用異或運算,比較接近底層運算速度快

**如下

#includeint main()

for(j=0

; j<5 ; j++)

for(i=0

; i<10 ;i++)

printf("%d ",a[i]);

}

也許有些朋友會對這個異或運算比較生疏,異或的意思就是同取0,異取1

舉個栗子(左邊為10進製,右邊為2進製),交換 a,b值

a = 3 -> 011

b = 4 -> 100

則 a = a ^ b = 011 ^ 100 = 111 此時 a = 7 -> 111;

b = b ^ a = 100 ^ 111 = 011 此時 b = 3 -> 011;

a = a ^ b = 111 ^ 011 = 100 此時 a = 4 ->100;

互換成功,是不是很簡單呢o(∩_∩)o

此外拓展一下不借助第三變數的互換運算還有利用加減互換,如下

但此方法有侷限性,當 a + b 超出 a 的範圍時會報錯,且加減沒有異或運算快,故最優解還是異或運算

異或演算法C語言實現

include include 加密 解密檔案 param sourcefile 要加密 解密的檔名 param secretkey 金鑰 param targetfile 加密 解密後要儲存的檔名 return 加密成功或失敗的數字表示 1 加密失敗 0 加密成功 int encryptfile ...

c語音異或運算子 c語言異或 c語言異或運算例子

用異或演算法逐字節對檔案c進行加密,輸出到另外乙個新檔案d中。include include int main 按位異或需要將異或雙方轉換成二進位制數,如當a 5時,二進位制為101,與0異或後結果為100,也就是b 4的二進位制了。異或時的規則是 逐位進行比較,相同為0 即1與1.位運算子有 按位...

C語言 位異或運算子

c語言 位異或運算子 位運算子家族中,最常用的,某過於異或運算子。異或運算子是指 參與運算的兩個值,如果兩個相應位相同,則結果為0,否則為1。即 0 0 0,1 0 1,0 1 1,1 1 0 例如 10100001 00010001 10110000 0 0 0,0 1 1 可理解為 0異或任何數...