C++ 按位与、或、异或等运算方法

article/2025/8/27 10:11:40

按位与运算符(&)

参加运算的两个数据,按二进制位进行“与”运算。

运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;

       即:两位同时为“1”,结果才为“1”,否则为0

例如:3&5  即 0000 0011 & 0000 0101 = 0000 0001   因此,3&5的值得1。

 

另,负数按补码形式参加按位与运算。

“与运算”的特殊用途:

(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。

 

(2)取一个数中指定位

方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。

例:设X=10101110,

    取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;

    还可用来取X的2、4、6位。

 

按位或运算符(|)

参加运算的两个对象,按二进制位进行“或”运算。

运算规则:0|0=0;   0|1=1;   1|0=1;    1|1=1;

      即 :参加运算的两个对象只要有一个为1,其值为1。

例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111   因此,3|5的值得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,否则为0。

 

“异或运算”的特殊作用:

(1)使特定位翻转 找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。

例:X=10101110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001即可得到。

 

(2)与0相异或,保留原值 ,X ^ 0000 0000 = 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,右边丢弃。

操作数每右移一位,相当于该数除以2。

例如:a = a >> 2 将a的二进制位右移2位,

左补0 or 补1 得看被移数是正还是负。

 

 

>> 运算符把 expression1 的所有位向右移 expression2 指定的位数。expression1 的符号位被用来填充右移后左边空出来的位。向右移出的位被丢弃。

例如,下面的代码被求值后,temp 的值是 -4:

  -14 (即二进制的 11110010)右移两位等于 -4 (即二进制的 11111100)。

  var temp = -14 >> 2

 

 

无符号右移运算符(>>>)

>>> 运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。

例如:var temp = -14 >>> 2

变量 temp 的值 -14 (即二进制的 11111111 11111111 11111111 11110010),向右移两位后等于 1073741820 (即二进制的 00111111 11111111 11111111 11111100)。

 

复合赋值运算符

位运算符与赋值运算符结合,组成新的复合赋值运算符,它们是:

&=    例:a &= b        相当于a=a & b

|=    例:a |= b        相当于a=a | b

>>=   例:a >>= b       相当于a=a >> b

<<= 例:a <<= b       相当于a=a << b

^=   例:a ^= b       相当于a=a ^ b

运算规则:和前面讲的复合赋值运算符的运算规则相似。

 

不同长度的数据进行位运算

如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算

以“与”运算为例说明如下:我们知道在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行“与”运算,右端对齐后,左边不足的位依下面三种情况补足,

(1)如果整型数据为正数,左边补16个0。

(2)如果整型数据为负数,左边补16个1。

(3)如果整形数据为无符号数,左边也补16个0。

如:long a=123;int b=1;计算a & b。

 

如:long a=123;int b=-1;计算a & b。

 

如:long a=123;unsigned int b=1;计算a & b。

 

另外,补充一个运算符优先级:


http://chatgpt.dhexx.cn/article/Sy3jE7py.shtml

相关文章

计算机win7几位,Win7 32位与64位有什么区别 Win7系统32位和64位的区别科普篇

Win7系统分32位和64位版本&#xff0c;很多人在选择32位和64位系统的时候十分纠结&#xff0c;原因是自己的电脑应该安装哪一种版本&#xff0c;那么Win7 32位与64位有什么区别&#xff0c;下面装机之家分享一下Win7系统32位和64位的区别科普篇。 Win7系统32位和64位的区别 Win…

位运算位与

目录 一、知识点 1.位与的定义 2.简单应用 &#xff08;1&#xff09;奇偶性判定 &#xff08;2&#xff09;取末五位 (3)消除末尾五位 &#xff08;4&#xff09;2的幂判定 二、习题 1.191. 位1的个数 - 力扣&#xff08;LeetCode&#xff09; 2.剑指 Offer 15. 二进制…

位与、位或、异或、位移运算

位与&#xff08;&&#xff09; 参与运算的两个数据&#xff0c;按照二进制位进行“与运算”。运算规则&#xff1a;0&00; 0&10; 1&00; 1&11; 即&#xff1a;两位同时为1&#xff0c;则值为1。否则为0 例如&#xff1a;9 & 5 1001 & 010…

git操作--------------------------------拉取某个远程分支到本地

1.新建一个空文件夹 例如:test 2.右键选择git bash here 初始化: git init可以看到文件夹里多了个.git隐藏文件 3.与远程master分支建立连接 git remote add origin http://xxx.xxx.xxx.xxx:xx/ly/fafafa.git直接去复制git仓库连接就行,这里以http做的示例 4.将远程分支拉到…

git远程分支代码拉取

1.远程拉取gitlab 工程分支&#xff0c;并在本地建立分支 具体过程 新建一个空文件初始化 git init自己要与origin master建立连接&#xff08;下划线远程仓库链接&#xff09; git remote add origin http://192.168.9.10:8888/root/game-of-life.git把远程分支拉到本地&#…

JAVA语言(Git拉取远程分支(dev)到本地)

步骤&#xff1a; 1、新建一个空文件&#xff0c;文件名为yrc_20220126 2.在当前文件夹单机鼠标右键&#xff0c;效果如下图&#xff1a; 3.点击弹出窗口的&#xff1a;Git Bash Here 4、初始化 git init5、自己要与origin master建立连接&#xff08;下划线为远程仓库链接…

idea把git远程分支拉取到本地

在开发过程中&#xff0c;我们有时候会碰到一种情况&#xff1a; 本地分支只有 development&#xff0c;远程分支有development,release,master这三个分支&#xff0c;那么我们本地要怎么切换到master分支呢&#xff1f; 一&#xff1a;正常来说&#xff0c;直接在idea的右下角…

git拉取远程指定分支到本地(本地分支映射到远程分支)

git拉取远程分支到本地 step1:新建一个空文件夹&#xff0c;名wuliu step2:初始化git git initstep3:与远程仓库建立连接 git remote add origin http://git.xxx.com:10001/root/vue-upms.git![在这里插入图片描述](https://img-blog.csdnimg.cn/20191008132344130.png st…

Git拉取远程分支到本地,修改并同步

Git拉取远程分支到本地 本地新建一个空白文件夹folder&#xff1b;进入folder目录&#xff0c;打开git bash&#xff0c;用命令行初始化git仓库&#xff1b; $ git init与远程仓库建立连接&#xff1b; // http://xxx...该网址为远程仓库Game的ip地址&#xff0c;可在远程仓…

从Git上如何拉取远程分支(dev)到本地?

步骤 1. 首先新建一个空的文件&#xff0c;文件名自定义2. 在当前文件夹下鼠标右击打开Git Bash here3. 打开后进行初始化 &#xff1a; git init4. 与origin master建立一个连接5. 把远程分支拉到本地6. 在本地创建分支dev并且进行切换到该分支7. 把某个分支上的内容进行拉取到…

【git之路】拉取远程分支到本地

文章目录 1、新建一个空文件夹2、初始化3、自己要与origin master建立连接&#xff08;下划线为远程仓库链接&#xff09;4、把远程分支拉到本地5、在本地创建分支dev并切换到该分支6、把某个分支上的内容都拉取到本地检查下&#xff0c;就结束啦 1、新建一个空文件夹 取名mas…

git 拉取远程分支到本地及本地切换分支

拉取远程分支到本地及本地切换分支 涉及的操作内容1.远程代码拉取到本地 - 2.本地合并其它分支代码 - 3.本地代码提交到远程指定仓库 - 4.本地切换分支 1.远程代码拉取到本地 首先确定要切换分支&#xff0c;查看当前本地及远程所有分支 git branch -a红色为远程分支&#…

git拉取远程分支到本地

**步骤&#xff1a; 1、新建一个空文件&#xff0c;文件名为hhhh 2、初始化 git init 3、自己要与origin master建立连接&#xff08;下划线为远程仓库链接&#xff09; git remote add origin gitgithub.com:XXXX/nothing2.git 远程仓库链接在github这里&#xff0c;如下…

git 拉取远程分支到本地(最简单方式)

步骤&#xff1a; 接下来我们进入正题&#xff1a; 一、新建一个空文件&#xff0c;文件名为hash------(名字随便取&#xff09; 二、初始化------git init 注意–(初始化完成之后记得检查文件夹是否有**(.git文件夹&#xff09;**-----有些文件夹打开没有大多数是隐藏了&am…

git拉取远程指定分支到本地

1.通过git clone的方式 只克隆单一分支&#xff1a; git clone -b <branch> --single-branch <url>注意&#xff1a; git clone -b <branch> <url>这条克隆的指令与全克隆的作用一致。 2.通过本地分支映射到远程分支的方式 a.与远程仓库建立连接 …

git 拉取远程分支到本地

目录&#xff1a; ***&#xff01;本小作者&#xff0c;是将终端和Git的可视化插件结合使用&#xff0c;刚接触的可以自习看一下&#xff0c;内容简单&#xff0c;避免弯路&#xff01;***一&#xff0c;简单了解远程分支1&#xff0c;连接远程&#xff1a;2&#xff0c;提交&a…

socket协议解读

前言 Socket的使用在 Android网络编程中非常重要今天我将带大家全面了解 Socket 及 其使用方法 目录 1.网络基础 1.1 计算机网络分层 计算机网络分为五层&#xff1a;物理层、数据链路层、网络层、运输层、应用层 其中&#xff1a; 网络层&#xff1a;负责根据IP找到目的地址的…

UDP/IP传输协议

一、传输层最重要的协议就是TCP和UDP。TCP协议复杂&#xff0c;是面向连接的传输协议且传输可靠&#xff1b;而UDP协议简单&#xff0c;是面向无连接的传输协议&#xff0c;传输速度快但传输不可靠。可以将UDP协议看作IP协议暴露在传输层的一个接口。 UDP协议同样以数据报(dat…

基于TCP协议的Socket网络通信

前言 一. 什么是网络(了解七层网络模型)?二. 什么是TCP/UDP协议?三.什么是socket?定义 四.基于TCP协议的socket通信的实现步骤是怎样的&#xff1f;客户端的实现服务端的实现测试 一. 什么是网络(了解七层网络模型)? 按区域可分为&#xff1a; 局域网&#xff08;区域小&am…

socket、tcp/ip、http三者之间的区别和原理

网络七层模型 OSI 模型(Open System Interconnection model)是计算机和网络在世界范围内实现互联的标准框架。它将计算机网络体系结构划分为七层,每层都可以提供抽象良好的接口。 1、物理层&#xff1a;例如线路、无线电、光纤、信鸽 物理层负责最后将信息编码成电流脉冲或其…