(与运算)、|(或运算)、^(异或运算)
按位与运算符(&)
运算规则:
- 参与运算的两个操作数转换为二进制按照“与”运算
- 0&0 = 0;1&0 = 0;0&1 = 0;1&1 = 1;
- 即:两个操作数同为“1”的时候为1;
例:3&5 即0000 0011 & 0000 0101 = 1;
另,负数按补码形式参加按位与运算。
“与运算”的特殊用途:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 00001110 即可得到;
还可用来取X的2、4、6位。
按位或运算符(|)
运算规则:
- 参与运算的两个操作数转换为二进制按照“或”运算
- 0|0 = 0;1|0 = 1;0|1 = 1;1|1 = 1;
- 即:两个操作数中至少有一个为“1”的时候为1;
例:3|5 即 即0000 0011 | 0000 0101 = 7;
另,负数按补码形式参加按位或运算。
“或运算”特殊作用:
(1)常用来对一个数据的某些位置1。
方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。
例:将X=10100000的低4位置1 ,用X | 0000 1111 = 1010 1111即可得到。
异或运算符(^)
运算规则:
- 参与运算的两个操作数转换为二进制按照“与”运算
- 0 ^ 0 = 0; 0 ^ 1=1; 1 ^ 0=1; 1 ^ 1=0;
- 即:两个操作数不同的时候为1;
异或运算”的特殊作用:
(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。
例:X=10101110,使X低4位翻转,用X ^0000 1111 = 1010 0001即可得到。
(2)与0相异或,保留原值 ,X ^ 00000000 = 1010 1110。
从上面的例题可以清楚的看到这一点。
取反运算符(~)
- 参加运算的一个数据,按二进制位进行“取反”运算。
- 运算规则:~1=0; ~0=1;
- 即:对一个二进制数按位取反,即将0变1,1变0。
- 使一个数的最低位为零,可以表示为:a&~1。
- 1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。
左移运算符(<<)
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例:a = a<< 2将a的二进制位左移2位,右补0,
左移1位后a = a *2;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。
右移运算符(>>)
讲一个运算对象的各二进制位全部右移若干位(右边丢弃,左边根据数值的正负来补0或者补1,正数左补0,负数左补1,)。
操作数每右移一位,相当于该数除以2。
例如:a = a>> 2 将a的二进制位右移2位,
左补0 or 补1得看被移数是正还是负。
(与运算)、|(或运算)、^(异或运算)相关推荐
- 异或运算_专题 | 异或运算的一些应用
点击上方蓝字设为星标 每周一.三.五上午 8:30 准时推送 下面开始今天的学习- 定义 异或是一个数学运算,用于逻辑运算.如果 a.b 两个值不同,则异或结果为 1 ,否则结果为 0 .真值表如下: ...
- c语言两个变量异或运算,C语言异或运算
C语言异或运算 位运算符家族中,最常用的,某过于异或运算符. 异或运算符是指: 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1.即:0^0=0, 1^0=1, 0^1=1, 1^1= ...
- C语言异或运算的实现,异或运算C语言简单实现
/*说明:下面的方法只适用于非负数,范围为int*/ #include #include #include using namespace std; int xor_old(int a,int b){ ...
- 经典算法之异或运算(无进位相加)
目录 异或运算的定义 异或运算的性质 异或运算的应用 交换两数 翻转指定位 寻找单身狗 异或运算的定义 众所周知,计算机中的所有数据都是以二进制(0或者1)的形式存储.而异或运算符(^)就是将参加运算 ...
- matlab中逻辑非运算,MATLAB:图像的与、或、非、异或逻辑运算(、|、~、xor)
图像的与.或.非.异或逻辑运算涉及到了&.|.~和xor符号 close all;%关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clc; clear all; I=imrea ...
- 异或运算的基本介绍以及使用技巧,剖析常见的异或题目
关于异或运算 一.异或运算的基本介绍 二.异或运算的性质 三.异或运算的经典题目 1.题目1 2.题目2 3.题目3 4.题目4 5.题目5 四.异或运算小结 一.异或运算的基本介绍 异或运算,符号为 ...
- 取模运算法则,异或运算法则
一.取模运算法则(百度百科) 定义 给定一个正整数p,任意一个整数n,一定存在等式 : n = kp + r : 其中 k.r 是整数,且 0 ≤ r < p,则称 k 为 n 除以 p 的商, ...
- mysql位运算 索引_mysql 使用位运算
如果你不知道什么是位运算的话, 那么请你先去看看基础的C语言教程吧. 与运算 a & b , 或运算 a | b , 异或运算 a ^ b , 或者 你也可以将 与运算理解为 + 法 例如 ...
- 不占用多余空间实现值的交换——异或运算
首先什么是异或运算? ^规则: 0 ^ x = x x ^ x = 0 那么 a 与 b 交换值如何做呢???三行代码
- C 关于使用异或运算操作概述
对于异或运算操作,每次都需要读取两个数据到寄存器中,再进行运算操作,之后把结果写回到变量中,前后共需要三次内存写入操作. 异或运算可以达到交换两数的目的,代码如下: void swap(int &am ...
最新文章
- lua中正则表达式的坑
- spring boot 2.0 源码分析(二)
- 跳出数据计算拯救人工智能之分布式逻辑
- python利器怎么编程-python等自动化脚本编程利器 Script.NET
- spring10: 引用类型的自动注入
- opencv4 c++ 提取图片中的白色区域_【从零学习OpenCV 4】形态学应用
- Git——[error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054]解决方案
- top进阶命令htop运用
- 计算机安全性无效无法连接到网络,图文研习windows10系统连接网络提示无法连接到此网络错误的方法?...
- su: user tomcat does not exist
- Android 项目中文件夹的作用
- pytorch ——模型创建与nn.Module
- 黑马程序员——程序结构
- linux组合键 发送指定信号_linux trap脚本信号捕获命令的使用
- 成都将于1月27日开启数字人民币红包活动
- Tip: JSP开发模式
- win7系统架设传奇的简单办法
- tornado 源码分析 waker
- 义隆单片机可用c语言写了吗,义隆单片机编程时应注意的几点
- 我只说一次,这样用领英开发国外客户,屡试不爽!
热门文章
- tmux关闭某个不响应的窗口(window)
- Channels ——django实时推送系统
- telnet找不到这个服务器,win7系统找不到Telnet服务的解决方法
- Python数据可视化实战 (附Python代码)
- ITERATE MYSQL 例子_介绍MySQL的Iterate迭代语句实例代码
- bzoj3714【PA2014】Kuglarz
- compler moves this pointer while Upcasting derived ojbect pointe to parent pointe by static_cast
- 利用huggingface-transformers进行命名实体识别
- vnpy文件结构说明
- 京东App Swift 混编及组件化落地