首页 > 编程语言 >【算法】位运算

【算法】位运算

时间:2024-02-05 23:46:10浏览次数:28  
标签:操作数 运算 异或 取反 算法 按位 数字

常见的位运算操作(操作对象为正整数时)

1. 按位与(&):
当两个数全为1才为1,否则为0。两个数字做与运算,结果不会变大。
2. 按位或(|):
当两个数中有一个1为1,否则为0。两个数字做或运算,结果不会变小。
3. 按位异或(^):
两个数不同为1,相同为0.两个数字做异或运算,结果可能变大,也可能变小。
异或的性质:

  • 交换律:x ^ y = y ^ x
  • 结合律:x ^ (y ^ z) = (x ^ y) ^ z
  • 自反性:x ^ x = 0
  • 零元素:x ^ 0 = x
  • 逆运算:x ^ y = z,有z ^ y = x

4. 按位取反(~):
对操作数的每一位进行取反操作,通常用于无符号整数(unsigned int/long long),这是为了避免符号位取反造成的干扰。
5. 按位左移(<<):
对操作数向左移动,低位补0,相当于乘以2的k次幂。
6. 按位右移(>>):
对操作数向右移动,高位补0,相当于除以以2的k次幂。

位运算技巧

  1. 判断数字奇偶性:x & 1。(为1是奇数,为0是偶数)
  2. 获取二进制数的某一位:x >> i & 1。
  3. 修改二进制的某一位为1:x | (1 << i)。
  4. 判断一个数字是否为2的幂次方:x & (x - 1)。
    5.获取二进制位中最低位的1:x & -x。

标签:操作数,运算,异或,取反,算法,按位,数字
From: https://www.cnblogs.com/zc-study-xcu/p/18009018

相关文章

  • Prim算法
    问题描述有一张\(n\)个顶点、\(m\)条边的无向图,且是连通图,求最小生成树。Prim算法简析\(Prim\)算法是一种求最小生成树的算法。设该图为\(G=(V,E)\)。最小生成树即所求为\(G_T=(V_T,E_T)\),因为图是连通的,所以最小生成树会覆盖所有的顶点,即\(V==V_T\)。\(G_T\)......
  • C++编程练习||实现分数类Fraction1、实现分数的+,-,*,/ 2、逻辑运算==、!=、<、<=、>、>
    题目:实现分数类Fraction  classFraction{   intnumerator,denominator;   public:   ....  };  要求:1、实现分数的+,-,*,/2、逻辑运算==、!=、<、<=、>、>=6种运输符号。3、实现输出<<,输入 >>操作符重载。  样例1输入:   12 ......
  • 【算法专题】约数个数
    约数个数约数个数的普通求法首先我们根据数的唯一分解定理,对\(N\)进行分解得:\[N=p_1^{c_1}\timesp_2^{c_2}\timesp_3^{c_3}\times...\timesp_k^{c_k}\]由约数的定义:\(p_1^{c_1}=p_1^{0}\timesp_1^{1}\timesp_1^{2}\times...\timesp_1^{c_1}\)共有\(c_1......
  • 一套模板搞定二叉树算法题--二叉树算法讲解004
    1、二叉树经典习题模拟忘记知识点和技巧时,遇到一个新的二叉树习题,该如何处理思考和写代码解题?1.1、leetcode965题目和题意:题解1成员变量self.ans:题解2递归回传:1.2、leetcode257该题是个经典二叉树题目题目和题意:题解:分析,所有路径,每一个叶子节点都需要到达。到......
  • 2024牛客寒假算法基础集训营2(小白)
    A.TokitsukazeandBraceletCode:#include<bits/stdc++.h>usingnamespacestd;intmain(){intt;cin>>t;while(t--){inta,b,c,cnt=0;cin>>a>>b>>c;if(a>=150)cnt++;if(a>=200)......
  • 代码随想录算法训练营第十三天|239. 滑动窗口最大值 347.前 K 个高频元素 总结
    239.滑动窗口最大值题目链接:239.滑动窗口最大值-力扣(LeetCode)给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值 。思路:首先在不考虑......
  • 【算法专题】筛质数
    筛质数的三种方法什么是质数?只能够被1和它本身整除的数叫做质数1、朴素筛法那么我们从定义出发,假设我们要判断\(n\)是否是质数,我们从\(1\)开始枚举每一个数,一直到\(n\)看看有没有其他的数能够被\(n\)整除,如果没有,那么\(n\)就是质数。假设我们要筛出从\(1\)~......
  • 2024牛客寒假算法基础集训营2
    题目链接A.模拟#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;voidsolve(){intn;cin>>n;while(n--){inta,b,c;cin>>a>>b>>c;intans=0;if(a==150)ans+=1......
  • 3.8新特性——海象运算符
    海象运算符海象运算符,即:=,在PEP572中被提出,并在Python3.8版本中发布。海象运算符的英文原名叫AssignmentExpresions,即赋值表达式。它由一个冒号:和一个等号=组成,即:=。而它被称作walrusoperator(海象运算符),是因为它长得像一只海象。语法格式及解释:variable:=expre......
  • 【教3妹学编程-算法题】1696. 跳跃游戏 VI
    3妹:好冷啊,冻得瑟瑟发抖啦2哥 :没想到都立春了还这么冷啊~3妹:暴雪、冻雨、大雨,这天气还让不让人活啦!!!2哥 :哎,好多人都滞留的高铁站了,没法回家了3妹:我还不知道今天怎么回家呢,惨。2哥:3妹,要不别回去了吧,我们就地过年3妹:切,这里更冷,每天抖啊抖,跳啊跳才能缓解寒冷,我们家那儿可是有暖气......