国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C > 正文

C語言如何利用異或進(jìn)行兩個值的交換詳解

2020-01-26 13:55:32
字體:
供稿:網(wǎng)友

C語言異或運(yùn)算

位運(yùn)算符家族中,最常用的,某過于異或運(yùn)算符。

異或運(yùn)算符是指: 參與運(yùn)算的兩個值,如果兩個相應(yīng)位相同,則結(jié)果為0,否則為1。即:0^0=0, 1^0=1, 0^1=1, 1^1=0

例如:10100001^00010001=10110000

0^0=0,0^1=1 可理解為:0異或任何數(shù),其結(jié)果=任何數(shù)

1^0=1,1^1=0 可理解為: 1異或任何數(shù),其結(jié)果=任何數(shù)取反

     任何數(shù)異或自己,等于把自己置0

1)按位異或可以用來使某些特定的位翻轉(zhuǎn),如對數(shù)10100001的第1位和第2位翻轉(zhuǎn),可以將數(shù)與00000110進(jìn)行按位異或運(yùn)算。

  10100001^00000110=10100111

      用十六進(jìn)制表示:0xA1 ^ 0x06= 0xA7

(2)通過按位異或運(yùn)算,可以實(shí)現(xiàn)兩個值的交換,而不必使用臨時變量。例如交換兩個整數(shù)a,b的值,可通過下列語句實(shí)現(xiàn):

      a=10100001, b=00000110

      a=a^b; //a=10100111

      b=b^a; //b=10100001

      a=a^b; //a=00000110

(3)異或運(yùn)算符的特點(diǎn)是:數(shù)a兩次異或同一個數(shù)b(a=a^b^b)仍然為原值a.

利用異或進(jìn)行兩個值的交換

異或有兩個很重要的性質(zhì):

1、 A^A = 0;

2、A^0 = A;

利用這兩個性質(zhì),我們就能夠利用異或進(jìn)行兩個值的交換。

代碼如下:

#include <stdio.h>int main(){ int a = -11; int b = -1;  a = a^b; b = a^b; a = a^b; /*或者簡寫為  *  a ^= b; b ^= a; a ^= b * **/ printf("交換后a = %d,b = %d/n",a,b); return 0;}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對武林網(wǎng)的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 民勤县| 西青区| 淳安县| 雅江县| 大化| 鹰潭市| 兰坪| 来宾市| 鹿邑县| 清徐县| 蓝田县| 古田县| 正阳县| 肇庆市| 巧家县| 剑川县| 泾川县| 徐汇区| 长治县| 沾益县| 乐东| 克什克腾旗| 清涧县| 古田县| 武穴市| 日土县| 颍上县| 仁布县| 拉孜县| 昌邑市| 安阳县| 英吉沙县| 宁都县| 顺义区| 伊吾县| 库车县| 宣化县| 庆阳市| 巨野县| 六枝特区| 崇义县|