按位运算操作符底层实现原理

本文详细解析了编程中常用的按位运算符的工作原理,包括按位与、按位或、按位异或、取反及位移运算符,并通过具体的二进制运算实例帮助读者深入理解。

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

本篇文章给大家讲解编程软件中的运算符底层实现原理!

     1.按位与运算&

按位与运算的底层运算过程如下
十进制:
3&5=1
二进制
0011&0101
= 0001
按位与运算就是将3的二进制上的每个bit位与5的二进制上的每个bit位比较如果两个bit位上的数相同则保留否则为0!
2.按位或运算|
按位或运算底层实现原理如下
十进制:
3|5=7
二进制:
0011|0101
= 0111
底层CPU执行过程:
如果bit位上的数为1则保留否则为0
3.按位异或运算
十进制:
3^5=6
二进制:
0011^0101
= 0110
底层CPU执行过程:
如果两个bit位上的数不同则保留为1相同则为0
4.取反运算符
十进制;
~5
二进制:
5: 0101
~: 1010(连同符号位一起取反)
~: 1101(在取反转换成负数的原码)
=: 1110(把低位进一)
1110=-6(得到-6)

底层CPU执行过程:
执行过程是先将5的二进制码取反运算包括符号位,然后在取反转换成负数的原码在末位的二进制数进一

5.位移运算符
十进制:
3<<2=12
二进制:
3: 0011
<<2
12: 1100
底层CPU执行过程:
位移运算是所有运算符里最容易理解的,左移(<<)两位就是将二进制上的bit位左移2位,这里说一个知识点,假如对0110这个二进制位右移4位会怎么样?答:右移四位则0000因为移动的位超出了寄存器的位数,如果移动的位数超出该二进制上的bit位最小或者最大那么这个位移的二进制数就会丢弃!

这些按位运算可以组合在一起用的,通常多数用在底层上操作特殊功能寄存器上的bit位!
比如
&|
3&|5
0011
0101
先做或运算
0011|0101
=0111
在做与运算
0111&0101
=0101
这样3上的bit位0011就变成了0101!

小知识:
&,|,~,^属于双目运算符,位移<<,>>属于单目运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值