细学C++之位运算符

本文介绍了C++中的位运算符,包括位逻辑运算符(与、异或、或、取反)和移位运算符(左移、右移)。通过实例展示了这些运算符的工作原理,帮助读者理解位运算在C++编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++运算符包括算数运算符、关系运算符、逻辑运算符、赋值运算符和位运算符等,其中位运算符是我们比较少用到的(至少我是),但它在C++语言中是必不可少的,这篇文章就来介绍一下C++中的位运算符

位运算符包括位逻辑运算符和移位运算符,顾名思义,位运算符作用于位,并逐位执行操作

位逻辑运算符:
& (位 ‘与’)
^ (位 ‘异或’)
| (位 ‘或’)
~ (为 ‘取反’)
移位运算符:(箭头指向哪边就是哪边移)
<< (左移)
>> (右移)
示例:假定变量A为10,变量B为20,将A,B化为二进制分别为01010,10100,因为运算时前面的许多0是A,B位运算后都是0,故为方便已省略,每个代码的解释后面的双等号箭头是直接运行的结果

下面逐一演示各个运算符的作用:

逻辑‘与’操作
计算原则:有0得0

cout<<(A&B)<<endl;//01010 & 10100 = 00000 ==>0(最终结果)

详细运算:
位运算符通过使用该表达式的二进制形式一一对齐来进行运算
逻辑‘与’操作详细计算过程
逻辑‘或’操作
计算原则:有1得1

cout<<(A|B)<<endl;//01010 | 10100 = 11110 ==>30

计算过程与上面类似,故以下不做图解

逻辑‘异或’操作
计算原则:相同得0,不相得1

cout<<(A^B)<<endl;//01010 

逻辑‘取反’操作
计算原则:与上面的不同,作用于一个表达式,1变为0,而0变为1,这里只对单个表达式A或B进行运算,所以补全前面的0

cout<<(~A)<<endl;//~0000000000001010 = 1111111111110101 ==>-11

至于上面的-11是怎么来的这里这里先不做解释,下篇文章介绍补码你就会理解
左移位操作
计算原则(默认移一位):数值向左移动一位(即去除最左边一位),并在最右边添加0
图解:
左移一位示例(A<<1)
可以试试思考一下下面结论:

cout<<(A<<2)<<endl;//001010 << 2 ==>101000 ==>40

右移位操作
计算原则(默认移一位):数值向右移动一位(即去除最右边一位),并在最左边添加0,与左移类似

cout<<(A>>2)<<endl;//01010 >> 2 ==>00010 ==>2

图解与左移类似故不做重复
至此,位运算符的章节也在这里介绍完了,下一篇介绍补码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值