C语言中位操作符的介绍与使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

一、位操作符是什么?

C语言中的位操作符是用于对二进制位进行操作的运算符。它们用于按位比较、移位和逻辑运算。

二、位操作符的类型

2.1. 按位与(&)

将两个操作数的每一个二进制位进行逻辑与运算,如果二进制位都为1,则结果为1,否则结果为0。常用于掩码操作,例如将某些二进制位置为0,将其他二进制位保留。

简单来说就是:有0就为0,同1就为1

下面举个简单的例子:

12&4(这里的数据为int类型,4字节大小)

12的补码 00000000000000000000000000001100

 4的补码  00000000000000000000000000000100

 12&4       00000000000000000000000000000100

2.2. 按位或(|) 

将两个操作数的每一个二进制位进行逻辑或运算,如果二进制位中有一个为1,则结果为1,否则结果为0。常用于设置或清除某些二进制位。

简单来说就是:有1就为1,同0就为0

例子如下:

12的补码 00000000000000000000000000001100

 4的补码  00000000000000000000000000000100

 12|4        00000000000000000000000000001100

 2.3. 按位异或(^) 

将两个操作数的每一个二进制位进行逻辑异或运算,如果二进制位相同,则结果为0,否则结果为1。常用于编码和解码数据,或者进行加密操作。

简单来说就是:同0异1

例子:

12的补码 00000000000000000000000000001100

 4的补码  00000000000000000000000000000100

 12^4       00000000000000000000000000001000

 2.4. 按位取反(~) 

将操作数的每一个二进制位进行取反操作,即0变为1,1变为0。常用于位运算中,例如生成掩码和反码。

简单来说:对补码每一位进行取反操作(包括符号位)

例子:

-12的补码 10000000000000000000000000001100

~-12          011111111111111111111111111111110011

 2.5. 左移操作符(<<)

将操作数的二进制位向左移动指定的位数,右侧空白位填充0。常用于乘以2的幂次方,例如将一个无符号整数左移n位相当于将其乘以2的n次方。

 2.6. 右移操作符(>>)

将操作数的二进制位向右移动指定的位数,左侧空白位填充符号位。常用于除以2的幂次方,例如将一个带符号整数右移n位相当于将其除以2的n次方。

移位规则:⾸先右移运算分两种: 1. 逻辑右移:左边⽤0填充,右边丢弃

                                                        2. 算术右移:左边⽤原该值的符号位填充,右边丢弃

PS:在现在大部分编译器上(如VS等),使用的都是算术右移 ,但仍有小部分编译器使用逻辑右移,可以在您的编译器上编写代码查看

 三、总结

以上是C语言中常见的位操作符及其基本概念和使用场景。在编写位运算相关的程序时,开发人员需要注意数据类型和操作数的正负性,以避免产生不正确的结果。

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值