算法设计(一) 比特位操作

本文介绍了C语言中的位操作符,包括按位与(&)、按位或(|)、按位异或(^)、取反(~)以及数据的左移(<<)和右移(>>). 通过实例解释了如何使用这些操作符进行位级别的逻辑运算,如关闭或置位特定位、变量值的交换以及快速的乘除运算。

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

  C语言支持全部的位操作符(Bitwise Operators)。位操作是对字节或字中的位(bit)进行测试、置位或移位处理,
    
  6种位操作符的形式与含义如下:
 
  & :按位“与”(AND);
 
  | :按位“或”(OR);
 
  ^ :按位“异或”(XOR);
 
  ~ :“取反” (NOT);
 
  》 :数据右移;
 
  《 :数据左移;
 
  1) 按位“与”运算
 
  按位“与”运算符 & 的作用是对运算符两侧以二进制表达的操作数按位分别进行“与”运算,而这一运算是以数中相同的位(bit)为单位的。
操作的规则是:仅当两个操作数都为1时,输出的结果才为1,否则为0。
 
  例如:
 
  a = 0x88,b = 0x81,则a & b 的运算结果如下:
 
  0x88 1000 1000 a数
 
  & 0x81 1000 0001 b数
 
  = 1000 0000
 
  其中,& 运算符让a数0x88与B数0x81的1位与1位、2位与2位……7位与7位分别相“与”。由于“与”运算的操作规则是,两个操作数中各位只要有1个为0,其结果中对应的位就为0。而a数与b数中只有最高位(第7位)均为1,因而该位结果为1,其它各位结果都为0。
 
  通常我们可把按位“与”操作 & 作为关闭某位(即将该位置0)的手段,例如我们想要关闭a数中的第3位,而又不影响其它位的现状,可以用一个数0xF7,即二进制数1111 0111去与a数作按位“与”运算:
 
  0x88 1000 1000 a数
 
  & 0xF7 1111 0111 屏蔽数
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值