C语言位操作之一

常用位操作符

1、位与 &(注:两个&是逻辑与,一个&才是位与)

位与和逻辑与的区别:位与时两个操作数是按照二进制位批次对应位相与的,逻辑与

是两个操作数作为整体来相与的。(例:0xAA&0xF0=0xA0,0xAA&&0xF0=1)

特点:(任何数,其实就是1或者0)与1位与无变化,与0位与变成0。

2、位或|(注:两个|是逻辑或,一个|才是位或)

位或与逻辑或的区别同上

特点:(任何数,其实就是1或者0)与1位或变成1,与0位或无变化。

3、位取反~(注:逻辑取反是!)

位取反是将操作数的二进制位逐个按位取反,每一位上1变0,0变1;逻辑取反就是

真变成假,假变成真。

连续取反(一个非0数连续按位取反两次,会得到原操作数;一个非0数连续两次按

逻辑取反,会得1)

4、位异或^(相同为0,不同为1)

1^1=0  0^0=0  1^0=1  0^1=1

特点:(任何数,其实就是1或者0)与1位异或会取反,与0位异或无变化。

5、左移位<<       右移位>>

C语言的移位要取决于数据类型。

对于无符号数,左移时右侧补0(相当于逻辑移位)

对于无符号数,右移时左侧补0(相当于逻辑移位)

对于有符号数,左移时右侧补0(算术移位,相当于逻辑移位)

对于有符号数,右移时左侧补符号位(如果正数就补0,负数就补1,叫算术移位)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值