位运算及其性质

定义

运算名符号效果
按位与&如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
按位或l两个相应的二进制位中只要有一个为1,该位的结果值为1
按位异或^若参加运算的两个二进制位值相同则为0,否则为1
取反~对一个二进制数按位取反,即将0变1,将1变0
左移<<用来将一个数的各二进制位全部左移N位,右补0
右移>>将一个数的各二进制位右移N位,移到右端 的低位被舍弃,对于无符号数,高位补0

性质及应用

左移 <<

每左移一位相等于乘上2

右移 >>

每右移一位相当于除于2

按位与 &

  1. 判断a的第j位是0还是1:若a&(1<<j)为正,该位是1;否则该位为0。

  2. 每执行一次a=a&(a-1),会将a用二进制表示时最右边的一个1变为0

 for(int s = sta; s; s = (s - 1) & sta) //枚举出sta的所有子集
  1. 如果需要判断一个数a是否为2的次幂,只需要计算出a&(a-1)的值,如果是0的话该数是2的次幂,反之则反之

  2. 取一个数a的最底位的1,用a&-a, 例如20(10) = 10100(2),那么20&-20 = 100(2);

按位异或 ^

  1. 如果需要将a的第j位取反的话,只需要进行 a^(1<<j)即可;

  2. 利用自反性交换两个数,按位异或有个很神奇的性质–自反性 a ^ b ^ b = a;

    利用这个性质我们可以不用第三个变量就能交换两个数;
    例如:我们要交换a和b两个,只需要进行以下操作即可;a = a ^ b;b = a ^ b;a = a ^ b;
    
  3. 满足:
    交换律 a ^ b==b ^ a
    结合律 (a ^ b) ^ c == a ^ (b ^ c)
    对于任何数x,都有 x ^ x=0,x^0=x
    若a ^ b=c,则a ^ c=b

按位或 l

  1. 可以将a的第j位变为1,用a|(1<<j)即可

update:

  1. a&b<=a+b
  2. “且”的符号:∧ ;“或”的符号:∨ ;“异或”的符号:⊕
  3. a ⊕ b = (¬a ∧ b) ∨ (a ∧ ¬b)
  4. a+b=(a|b)+(a&b)
  5. a|b=(a&b)+(a^b)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319819.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C Looooops POJ - 2115

C Looooops POJ - 2115 题目&#xff1a; A Compiler Mystery: We are given a C-language style for loop of type statement; I.e., a loop which starts by setting variable to value A and while variable is not equal to B, repeats statement followed by increasing …

IdentityServer4实战 - 谈谈 JWT Token 的安全策略

一.前言众所周知&#xff0c;IdentityServer4 默认支持两种类型的 Token&#xff0c;一种是 Reference Token&#xff0c;一种是 JWT Token 。前者的特点是 Token 的有效与否是由 Token 颁发服务集中化控制的&#xff0c;颁发的时候会持久化 Token&#xff0c;然后每次验证都需…

P4320-道路相遇,P5058-[ZJOI2004]嗅探器【圆方树,LCA】

两题差不多就一起写了 P4320-道路相遇 题目链接:https://www.luogu.com.cn/problem/P4320 题目大意 nnn个点mmm条边的一张图&#xff0c;qqq次询问两个点之间路径的必经点数量。 解题思路 建出圆方树然后问题就变为询问两个点之间路径的圆点数量&#xff0c;可以直接倍增L…

【Manacher】绿绿和串串(luogu 5446)

正题 luogu 5446 题目大意 定义对折为&#xff1a;以最后一个字符为对称轴翻转 问你一个字符串可能是由那些前缀对折若干次而来的 解题思路 先用Manacher求出回文长度 那么满足以下条件之一的前缀就是可行方案 最后一个字符的回文长度加上它的位置为n&#xff08;后面若干…

使用.Net Core实现FNV分布式hash一致性算法

说到FNV哈希算法不得不提Memcached&#xff0c;我们先简单介绍一下Memcached。MemcachedMemcached分为客户端与服务端&#xff0c;Memcached是服务端&#xff0c;服务端本身不提供分布式实现&#xff0c;只是一个单独的k-v缓存&#xff1b;Memcached的分布式是在客户端类库中实…

一起开心暑假集训第一周限时训练 2020/7/5

文章目录A - Goldbachs Conjecture POJ - 2262B - 同余方程 计蒜客 - T2010C - Tr A HDU - 1575D - C Looooops POJ - 2115vjudge试题集链接 A - Goldbach’s Conjecture POJ - 2262 试题链接&#xff1a; 线性筛先预处理&#xff0c;然后判断就行 #include<iostream>…

P5631-最小mex生成树【线段树,并查集】

正题 题目链接:https://www.luogu.com.cn/problem/P5631 题目大意 nnn个点mmm条边的一张图&#xff0c;求mexmexmex值最小的一棵生成树。 解题思路 考虑比较暴力的做法&#xff0c;枚举答案&#xff0c;然后判断其他边能否构成一棵生成树。 发现一条边会被重复加入多次&…

【Manacher】【贪心】字符串连接(金牌导航 Manacher-4)

正题 金牌导航 Manacher-4 题目大意 给出一个字符串&#xff0c;让你用最少的回文串连接得到该串&#xff08;这里连接是可以有重合的&#xff09; 解题思路 先用Manacher求出以x为左端点的回文串右端点最大的位置 然后在当前回文串中贪心求下一回文串的右端点 代码 #incl…

[XSY4197] Snow(树形DP)

我们在树上的每个点iii上放aia_iai​个小点&#xff0c;初始时先让每个点单独减&#xff0c;这样要花费aia_iai​之和的次数。 然后尝试把某些减合并。一个点上面的小点至多可以向两个相邻的小点连边&#xff08;这两个小点不能在同一个点上&#xff09;。每连一条边&#xff…

Followme Devops实践之路

引言天下武功,唯快不破想要提高开发团队效率&#xff0c;势必要有一套完整而成熟的开发流程方案&#xff0c;除了sprint迭代开发模式之外,还有近几年流行的devops流程,都是可以大幅度提高开发效率的工具. 我们团队也不断探索、实践&#xff0c;最终形成了现有的一套体系&#x…

【每日一题】6月30日 Growth

来源&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 1048576K&#xff0c;其他语言2097152K 64bit IO Format: %lld文章目录题目描述题解&#xff1a;代码&#xff1a;题目描述 弱弱有两个属性a和b&#xff0c;这两个属性初始的时…

P5445-[APIO2019]路灯【set,树状数组套线段树】

正题 题目链接:https://www.luogu.com.cn/problem/P5445 题目大意 n1n1n1个点&#xff0c;iii和i1i1i1个点之间有一条边&#xff0c;qqq个操作 断开/连接第xxx和x1x1x1之间的边询问目前为止aaa和bbb点在多少个操作后是联通的&#xff08;包括开始前&#xff09; 解题思路 粗…

【dfs】【hash】有趣的英语角(2015特长生 T2/luogu 1019)

正题 luogu 1019 题目大意 给你若干个词语&#xff0c;让你把他们连起来&#xff08;重复段叠在一起&#xff09;&#xff0c;每个词语最多用两次&#xff0c;问你该串最长是多少 解题思路 dfs枚举一个单词后面接哪个单词&#xff0c;然后枚举重叠长度&#xff0c;再用hash判…

基环树小记

概念 基环树就是有n个点n条边的图&#xff08;比树多出现一个环&#xff09;。 特殊形态的基环树 无向树(N点N边无向图) 外向树(每个点只有一条入边) 内向树(每个点只有一条出边) 以上三种树有十分优秀的性质&#xff0c;就是可以直接将环作为根。就可以对每个环的子树进行单…

【每日一题】7月1日题目精讲 借教室

来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld文章目录题目描述题解&#xff1a;差分&#xff1a;二分&#xff1a;整合代码&#xff1a;题目描述 在大学期…

利用BenchmarkDotNet 测试 .Net Core API 同步和异步方法性能

事由&#xff1a;这两天mentor给我布置了个任务让我用BenchmarkDotNet工具去测试一下同一个API 用同步和异步方法写性能上有什么差别。顺带提一下&#xff1a;啊啊啊啊 等我仔细看文档的时候文档 发现它让我用Release的模式去运行benchmark。 emmm...其实我之前一直在用Debug模…

CF280C-Game on Tree【数学期望】

正题 题目链接:https://www.luogu.com.cn/problem/CF280C 题目大意 nnn个点的一棵树&#xff0c;每次选择一个没有染色的点把它和它的子树染黑&#xff0c;求期望全部染黑的步数。 解题思路 可以理解为我们按照一个顺序轮流染色&#xff0c;如果一个点有祖先节点在它前面就不…

糊涂的教授(2015特长生 T3)

题目大意 平面上有n个矩阵&#xff0c;和n个数字&#xff0c;对于每个矩阵选择矩阵内的一个数字作为编号&#xff0c;让你给出唯一方案&#xff0c;使每个数字只作为一个矩阵的编号&#xff08;多种方案即为不可行的&#xff09; 解题思路 因为多种方案是不可行的&#xff0c…

MATLAB线性规划相关函数用法

一.线性规划的Matlab标准形式及软件求解 1. MATLAB中规定线性规划的标准形式为 其中c和 x为n 维列向量&#xff0c; A、 Aeq 为适当维数的矩阵&#xff0c;b 、beq为适当维数的列向量。 &#xff08;Aeq 对应约束条件中等式约束的系数矩阵&#xff0c;A为约不等式约束的系数矩…

势能线段树(均摊分析)

势能线段树 线段树能够通过打懒标记实现区间修改的条件有两个&#xff1a; 能够快速处理懒标记对区间询问结果的影响能够快速实现懒标记的合并 但有的区间修改不满足上面两个条件&#xff08;如区间整除/开方/取模等&#xff09;。 但某些修改存在一些奇妙的性质&#xff0c…