位運算的應用

1. 判斷偶數,判斷最低位是0還是1即可,?求模快

????????x % 2 != 0 //x正負都可以判斷;不?x%2 == 1,因為如果x為負奇數,x%2=-1

????????(x & 0x1) == 0

????????例如:

????????int x;

????????int main()

????????{

????????? ?cin>>x;

????????? ?if((x & 0x1)==0) cout<<"yes";?

????????? ?else cout<<"no";

????????? ?return 0;

????????}

2.兩個數的交換

????a = a^b;//a變為?個相同為0,相異為1的結果?

????b = a^b;//該結果和b做運算,得到原來的a?

????a = a^b;//該結果和a做運算,得到原來的b

再來個實例說明下以加深印象。int a = 13, b = 6;

????a的?進制為1101(?進制)

????b的?進制為 110(?進制)

????第?步 a^=b a = 1101 ^ 110 = 1011;

????第?步 b^=a b = 110 ^ 1011 = 1101;即b=13

????第三步 a^=b a = 1011 ^ 1101 = 110;即a=6

3.lowbit運算

????lowbit 運算 是位運算中比較重要的運算方式,用于計算一個二進制數最低位的1。

????lowbit 即二進制數最低位1所對應的值。

????如,二進制數 0b01011000最低的 1是在第3位,對應值為0b1000,即8。

??

位運算的應用.png

lowbit運算的實現

一個數的lowbit值,即一個數的最低位,可通過如下操作取出,復雜度為 O(1):

假設原來的數是a,對a取反加1得到~a+1,原數a和~a+1進行位與操作,就得到了lowbit值,即lowbit(a) = a & (~a + 1)。

? ?

位運算的應用1.png

當這個數是0,沒有最低位1的時候,結果為0。

因為取反加1就是一個數的相反數的補碼,因為lowbit也寫作?lowbit(a)=a&(-a)

一個數消去它的lowbit位,由上面的lowbit求法,直接減去它的lowbit值即可。

即 a-(a&-a)也可以由a&(a-1)得到

??

位運算的應用2.png

4.求整數的?進制表?中1的個數,不??個?個的移位判斷

????#include <bits/stdc++.h>

????using namespace std;

????int x,cnt;

????int main()

????{

????? ?cin>>x;

????? ?while(x!=0)

????? ?{

????? ?cnt++;

????? ?x&=x-1;//將最右邊的1置為0;正負都可計算,負數是按照補碼計算的,最后的符號位也被統計

????? ?}?

????? ?cout<<cnt;

????? ?return 0;

????}

5.判斷一個數是否2的N次?次

????題?要求:??個表達式,判斷?個數X是否是2的N次?,即2,4,8,16……等,要求不可以?循環語句。

????解析:2,4,8,16這樣的數轉化成?進制是10,100,1000,10000。

????如果X減去1后(低?位并且?進制的每?位都是1),這個數與X做與運算,答案若是0,則X是2的N次?。

????所以答案是:!(x&(x-1))

????即可寫成:if?!(x&(x-1)) cout<<"yes"

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

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

相關文章

FOC算法開環控制基礎

1. 為什么要有FOC算法 先看看從有刷電機到無刷電機的簡單介紹&#xff0c;如下圖1&#xff0c;通電螺線圈會產生磁場&#xff0c;這個磁場會產生N級和S級&#xff0c;然后這個電磁鐵就可以吸引永磁體&#xff0c;S級吸引N級&#xff0c;N級吸引S級&#xff0c;通俗的來說&…

【計算機網絡】HTTP中GET和POST的區別是什么?

從以下幾個方面去說明&#xff1a; 1.定義 2.參數傳遞方式 3.安全性 4.冪等性 1.定義&#xff1a; GET&#xff1a; 獲取資源&#xff0c;通常請求數據而不改變服務器的狀態。POST&#xff1a; 提交數據到服務器&#xff0c;通常會改變服務器的狀態或副作用(如創建或更新資源…

7400MB/s5050TBW完美結合,全新希捷酷玩530R SSD體驗評測

7400MB/s&5050TBW完美結合&#xff0c;全新希捷酷玩530R SSD體驗評測 哈嘍小伙伴們好&#xff0c;我是Stark-C~ 說到希捷酷玩530 SSD&#xff0c;很多硬核進階玩家應該都知道&#xff0c;或者說正在使用&#xff08;比如說我~&#xff09;。 作為希捷大廠旗下高性能SSD的…

(undone) MIT6.S081 2023 學習筆記 (Day11: LAB10 mmap)

url: https://pdos.csail.mit.edu/6.1810/2023/labs/mmap.html mmap和munmap系統調用允許UNIX程序對其地址空間進行精細控制。它們可用于進程間共享內存、將文件映射到進程地址空間&#xff0c;并作為用戶級頁面錯誤處理方案的一部分&#xff0c;例如課程中討論的垃圾回收算法。…

Q_OBJECT宏的作用

Qt 中&#xff0c;如果一個類中定義了信號&#xff08;signals&#xff09;或槽&#xff08;slots&#xff09;&#xff0c;那么這個類必須包含 Q_OBJECT 宏。 Q_OBJECT宏是 Qt 元對象系統的核心部分&#xff0c;它使得信號和槽機制能夠正常工作。 Q_OBJECT宏是 Qt 的元對象系統…

信息安全基石:加解密技術的原理、應用與未來

信息加解密技術是信息安全領域的核心技術之一&#xff0c;以下為你詳細介紹&#xff1a; 一、加密技術 1.定義&#xff1a;加密是通過特定的算法和密鑰&#xff0c;將原始的明文信息轉化為看似無意義的密文信息的過程。這一過程使得信息在傳輸、存儲等過程中&#xff0c;即使…

LeetCode:返回倒數第k個結點

1、題目描述 實現一種算法&#xff0c;找出單向鏈表中倒數第 k 個節點。返回該節點的值。 注意&#xff1a;本題相對原題稍作改動 示例&#xff1a; 輸入&#xff1a; 1->2->3->4->5 和 k 2 輸出&#xff1a; 4 說明&#xff1a; 給定的 k 保證是有效的。 2、…

R004 -計算機硬件基礎

目錄 1.數據表示&計算機網絡組成 2.計算機網絡分類 3.馮諾依曼體系結構 4.指令系統基礎 5.指令系統類型 6.流水線技術 流水線周期 &#xff1a;各流水段中&#xff0c;執行時間最長的那一段。就是T 流水線時間&#xff1a;t 1t2t 3 (n-1) * T 7.流水線指標 8.存儲系…

Mybatis學習(下)

目錄 1. 動態sql的應用 1.2 1.2 1.3 、 、 標簽 1.4 1. 動態sql的應用 使用Mybatis框架時, 對于sql數據的操作量比較大的時候, 看著會覺得很亂, 可能寫著寫著就亂了, 或者說回過頭來發現sql語句寫錯了, 很麻煩, 所以動態sql就可以讓我們用Java代碼, 替換部分sql語句 1.2 &l…

iview 老版本合并單元格

新版的iview中已經支持了合并單元格了&#xff0c;我的版本比較老&#xff0c;為&#xff1a;"iview": "^3.5.2"。暫不支持。記錄一下別的大佬的方法。感覺思路比較活&#xff0c;正在這種思路需要在解決問題的過程中學習。 核心思路&#xff1a;通過rende…

FGMRES(Flexible Generalized Minimal Residual)方法

FGMRES&#xff08;Flexible Generalized Minimal Residual&#xff09;方法是GMRES的變種&#xff0c;主要用于處理變預處理子&#xff08;即每次迭代的預處理子可能不同&#xff09;的情況。與標準GMRES相比&#xff0c;FGMRES通過存儲預處理后的向量而非預處理子本身&#x…

自主采集高質量三維重建數據集指南:面向3DGS與NeRF的圖像與視頻拍攝技巧【2025最新版!!】

一、? 引言 隨著三維重建技術的飛速發展&#xff0c;NeRF&#xff08;Neural Radiance Fields&#xff09;與 3D Gaussian Splatting&#xff08;3DGS&#xff09;等方法成為重建真實場景和物體幾何細節的前沿方案。這些方法在大規模場景建模、機器人感知、文物數字化、工業檢…

HarmonyOS Next-DevEco Studio(5.0.2)無網絡環境配置(詳細教程)

開發者如果電腦處于完全無網環境&#xff0c;可以參考下面文檔進行相關配置 DevEco Studio(5.0.2)開發環境一覽&#xff1a; 工具版本DevEco Studio5.0.2openHarmonySDK14ohpm5.0.11node.js18.20.1hypium1.0.21 一、下載DevEco Studio&#xff08;5.0.2 Release&#xff09;…

MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 是怎樣練成的?

接上文MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep 探究sleep.c是如何’煉成’的? 老實講&#xff0c;我不熟悉Makefile&#xff0c;最多寫過簡單的編譯和輔助腳本&#xff0c;拿到Xv6的Makefile是一臉懵的&#xff0c;至今還是一臉懵&#xff0c;那么我們上篇中新加的…

順序結構雙鏈表的實現

雙鏈表是用最快的時間實現鏈表的一種方式&#xff0c;具體的實現代碼如下&#xff1a; #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h>typedef int LTDataType; typedef struct ListNode {LTDataType data;struct ListNode* next;/…

GoFrame 奉孝學習筆記

第一章節 GoFrame 是一款基礎設施建設比較完善的模塊化框架 GoFrame 是一款基礎設施建設比較完善的模塊化框架, Web Server 模塊是其中比較核心的模塊,我們這里將 Web 服務開發作為框架入門的選擇,便于大家更容易學習和理解。 用GOland編寫代碼 go.mod module goframePro…

pinia實現數據持久化插件pinia-plugin-persist-uni

在學習uniapp過程中&#xff0c;看到了pinia-plugin-persist-uni插件&#xff0c;以前面試過程中也有面試過說vuex數據刷新之前的數據就丟失了&#xff0c;之前回答的是把數據存儲到數據庫或者本地存儲。pinia-plugin-persist-uni本質上數據也是本地存儲。 1、安裝 npm instal…

Git 多賬號切換及全局用戶名設置不生效問,GIT進行上傳無權限問題

解決 Git 多賬號切換及全局用戶名設置不生效問題 在軟件開發過程中&#xff0c;我們經常會使用 Git 進行版本控制。有時&#xff0c;我們需要在同一臺機器上管理多個 Git 賬號&#xff0c;最近我在進行使用git的時候因為項目要進行上傳的不同的git賬號&#xff0c;但是通過本地…

基于STM32定時器中斷講解(HAL庫)

基于STM32定時器中斷講解&#xff08;HAL庫&#xff09; 1、定時器簡單介紹 以STM32F103C8T6中幾個定時器為例&#xff1a; TIM1&#xff1a;這是一個高級定時器&#xff0c;不僅具備基本的定時中斷功能&#xff0c;還擁有內外時鐘源選擇、輸入捕獲、輸出比較、編碼器接口以…

UE5 項目遷移 注意事項記錄

做項目的時候項目越做越大 132g的體量一旦移動復制就耗時間 這個時候遷移派上了用場 前置知識&#xff1a;會使用基本ue遷移流程 以下是遷移注意事項 遷移步驟 首先把項目插件plugins復制粘貼到新項目中其次把.project文本形式 全部復制粘貼新項目中開始遷移項目 選中要遷移的…