C语言位运算及其应用

位运算符

位运算符允许对一个字节或更大的数据单位中独立的位做处理:可以清除、设定,或者倒置任何位或多个位。也可以将一个整数的位模式(bit pattern)向右或向左移动,针对的是二进制。
在这里插入图片描述在这里插入图片描述
注意:<<左移运算符最右边补0,>>右移运算符最左边补符号位,(记忆这两个符号方法:箭头朝哪一边就是哪一边移)

位运算应用
下面数据x设为1字节,即8位

去掉最后一位 : (101101->10110) 算法 x >> 1

在最后加一个0:(101101->1011010) 算法 x << 1

在最后加一个1:(101101->1011011) 算法 (x << 1)|1

把最后一位变成1: (101100->101101) 算法 x | 1

把最后一位变成0:(101101->101100) 算法 (x | 1)-1

最后一位取反:(101101->101100) 算法 x ^ 1

把右数第k位变成1:(101001->101101,k=3) 算法 x | (1 << (k-1))

把右数第k位变成0: (101101->101001,k=3) 算法 x & ~(1 << (k-1))

右数第k位取反: (101001->101101,k=3) 算法 x ^ (1 << (k-1))

取末三位: (1101101->101) 算法 x & 7
注:7的二进制为0000 0111,x&7即可取末三位

取末k位: (1101101->1101,k=4) 算法 x & ((1 << k)-1)

取右数第k位: (1101101->1,k=4) 算法 (x >> (k-1)) & 1

位运算方法总结

1.确定符号,变1:|1;变0:&0;取反:^1
2.确定数字
3.构造数字
例如:在这里插入图片描述
例题:统计一个字节数据二进制1的个数
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值