2022-01-11 14:43:19|已瀏覽:143次
1、一個數(shù)和自己做異或的結果是0。如果需要一個常數(shù)0,x86平臺的編譯器可能會生成這樣的指令:xorl %eax, %eax。不管eax寄存器里的值原來是多少,做異或運算都能得到0,這條指令比同樣效果的;movl $0, %eax指令快,直接對寄存器做位運算比生成一個立即數(shù)再傳送到寄存器要快一些。
2、從異或的真值表中可以看出,和0做異或保持原值不變,和1做異或得到原值的相反值?梢岳眠@個特性配合掩碼實現(xiàn)某些位的翻轉,例如:1.unsigned int a, b, mask = 1U << 6; 2.a = 0x12345678; 3.b = a ^ mask; /* flip the 6th bit */C語言中若需要交換兩個變量的值,除了通常使用的借用中間變量進行交換外,還可以利用異或,僅使用兩個變量進行交換,如:a=a^b;b=a^b;a=a^b;這樣就完成了a與b的交換。
本文由培訓無憂網(wǎng)達內教育專屬課程顧問老師整理發(fā)布,更多C語言課程信息可關注培訓無憂網(wǎng)C語言培訓頻道或添加老師微信:15033336050
注:尊重原創(chuàng)文章,轉載請注明出處和鏈接 http://m.universityresearchassociates.com/news-id-14645.html 違者必究!部分文章來源于網(wǎng)絡由培訓無憂網(wǎng)編輯部人員整理發(fā)布,內容真實性請自行核實或聯(lián)系我們,了解更多相關資訊請關注c語言頻道查看更多,了解相關專業(yè)課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050