C语言位运算

1.概述

位运算符含义运算规则
&两位同为1得1,有0得0
|两位同为0得0,有1得1
^异或两位相同为0,不同为1
~取反0变1,1变0
<<左移每个二进制位都左移若干位 a<<n,高位丢弃,低位补0
>>右移每个二进制位都右移若干位a>>n,无符号数高位补0,有符号数有的补0有的补符号位

比如在c语言中,long占4个字节,int占2两个字节,如果一个long类型数据和一个int类型数据进行与运算,则右端对齐,左侧补位方式有三种:

  • 若整型数据为正数或者无符号数,左边补16个0
  • 若为负数,补16个1

2.使用

(1)与运算&
  • 清零操作:令要清零得单元和该为为0的数值相与,比如二进制表示5为101,若要将最右侧1清零,可以与110相与,得100。
  • 取该数的指定几位:和清零操作类似,使用了与1不变,与0为0的特性
  • 判断奇偶:用if((a&1)==0)代替if(a%2==0)
(2)或运算|
  • 将一个数据的某些位置设为1
(3)异或运算^
性质:
  • 交换律
  • 结合律
  • 对任何数x,有x^x=0, x^0=x
  • 自反性
用途:
  • 翻转指定位置
  • 与0相异或值不变
  • 交换两个数
(4)取反~
  • 令一个数的某位为0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值