最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言如何利用異或進行兩個值的交換詳解

 更新時間:2017年09月13日 11:32:14   作者:青兒哥哥  
最近在工作中遇到了兩個值交換的需求,發(fā)現(xiàn)自己對異或有些忘記,所以索性寫出來,方便以后需要的時候參考學習,下面這篇文章主要給大家介紹了關(guān)于C語言如何利用異或進行兩個值的交換的相關(guān)資料,需要的朋友可以參考下。

C語言異或運算

位運算符家族中,最常用的,某過于異或運算符。

異或運算符是指: 參與運算的兩個值,如果兩個相應(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進行按位異或運算。

  10100001^00000110=10100111

      用十六進制表示:0xA1 ^ 0x06= 0xA7

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

      a=10100001, b=00000110

      a=a^b; //a=10100111

      b=b^a; //b=10100001

      a=a^b; //a=00000110

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

利用異或進行兩個值的交換

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

1、 A^A = 0;

2、A^0 = A;

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

代碼如下:

#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)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • C/C++獲取Windows平臺CPU占用率的方法

    C/C++獲取Windows平臺CPU占用率的方法

    最近在做系統(tǒng)信息相關(guān)的接口,為了實現(xiàn)跨平臺,故在linux和Windows平臺獲取占用率信息,文章主要介紹Windows下的方法,文中給出了參考代碼,需要的朋友可以參考下
    2023-12-12
  • 一篇文章帶你用C語言玩轉(zhuǎn)結(jié)構(gòu)體

    一篇文章帶你用C語言玩轉(zhuǎn)結(jié)構(gòu)體

    本文主要介紹C語言 結(jié)構(gòu)體的知識,學習C語言肯定需要學習結(jié)構(gòu)體,這里詳細說明了結(jié)構(gòu)體并附示例代碼,供大家參考學習,有需要的小伙伴可以參考下
    2021-09-09
  • C語言實現(xiàn)字符串字符反向排列的方法詳解

    C語言實現(xiàn)字符串字符反向排列的方法詳解

    這篇文章主要為大家分享了幾種通過C語言實現(xiàn)字符串字符反向排列(不是逆序打?。┑姆椒?,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-05-05
  • C++中關(guān)鍵字Struct和Class的區(qū)別

    C++中關(guān)鍵字Struct和Class的區(qū)別

    這篇文章主要介紹了C++中關(guān)鍵字Struct和Class的區(qū)別,本文用大量實例講解了Struct和Class的區(qū)別,需要的朋友可以參考下
    2014-09-09
  • 深入理解C語言指針

    深入理解C語言指針

    關(guān)于指針,其是C語言的重點,C語言學的好壞,其實就是指針學的好壞。其實指針并不復(fù)雜,學習指針,要正確的理解指針
    2020-02-02
  • C++實現(xiàn)LeetCode(77.Combinations 組合項)

    C++實現(xiàn)LeetCode(77.Combinations 組合項)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(Combinations 組合項),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言中關(guān)于庫函數(shù) qsort 快排的用法

    C語言中關(guān)于庫函數(shù) qsort 快排的用法

    快速排序Qsort是所有學習算法和數(shù)據(jù)結(jié)構(gòu)最基礎(chǔ)的一個部分,也是考試題和面試的一個小重點。本片文章帶你了解Qsort的詳細用法規(guī)則
    2021-09-09
  • C++異步調(diào)用方法詳解

    C++異步調(diào)用方法詳解

    這篇文章主要介紹了C++異步調(diào)用方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • c++實現(xiàn)排序算法之希爾排序方式

    c++實現(xiàn)排序算法之希爾排序方式

    這篇文章主要介紹了c++實現(xiàn)排序算法之希爾排序方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++詳細講解模擬實現(xiàn)位圖和布隆過濾器的方法

    C++詳細講解模擬實現(xiàn)位圖和布隆過濾器的方法

    位圖(bitset)是一種常用的數(shù)據(jù)結(jié)構(gòu),常用在給一個很大范圍的數(shù),判斷其中的一個數(shù)是不是在其中。在索引、數(shù)據(jù)壓縮方面有很大的應(yīng)用。布隆過濾器是由布隆提出的,它實際上是一個很長的二進制向量和一系列隨機映射函數(shù)。布隆過濾器可以用于檢索一個元素是否在一個集合中
    2022-06-06

最新評論

绵竹市| 湟中县| 商水县| 昆山市| 牙克石市| 昌吉市| 普兰店市| 花莲县| 南城县| 盘锦市| 泉州市| 金溪县| 瓮安县| 扎鲁特旗| 休宁县| 广水市| 永德县| 彰化县| 宜都市| 四会市| 商城县| 田林县| 塘沽区| 宁安市| 景德镇市| 阜新| 登封市| 喀喇沁旗| 新疆| 平湖市| 南郑县| 仁怀市| 高邑县| 台安县| 江安县| 丹江口市| 富民县| 通化县| 枞阳县| 仁寿县| 轮台县|