“^”,操作符異或。 在進行一些操作時,經常需要交換兩個數,而交換兩個數最簡單的方法是引入第三個數。 例如: 定義一個a,定義一個b,交換a和b隻需要定義一個c,讓c等於a,b等於a,a等於c,就完成了一個賦值上的交換。 而在一些情況時,不允許引入第三個數,有一個方法是,直接對a和b進行加減,從而達到交換的作業。 例如: a =a + b; //注意,下麵的b就相當於a,因為a+b-b b =a - b; //注意,下麵式子中,a是a+b,整體就是a=a+b-a(上個注釋解釋了原因。) a =a - b; 但這個用計算達到交換目的的方法有個缺點,那就是這樣交換,int的a和b會有最大值,如果超出了最大值,就會溢出。 一刻也沒有為計算達成交換目的有缺點而感到悲傷,下麵登場的是異或“^”符號。 a = a ^ b; b = a ^ b; a = a ^ b; 這一係列操作就可以吧a和b進行交換。 原理: 異或是將a和b兩個數字的補碼進同0,異1的計算。組成一個新的碼,再將這個碼給給變成原碼(如果為正,那麼原反補碼都一樣,如果為負,那麼反碼是補碼-1,原碼是反碼除首位數字外,1變0,0變1)。 經過計算,如果熟練之後會發現 7^7=0,0^7=7,7^7^7=7, 那麼 a = a ^ b; b = a ^ b; //這個式子等同於b=a^b^b,結果為a,所以b=a a = a ^ b; //這個式子等同於a=a^b^a,結果為b,所以a=b 我趣,真神奇,真有意思,好玩,太妙了
第26章 操作符之異或(1 / 1)