C语言位运算及其应用


categories:

  • 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的个数
在这里插入图片描述

全部评论

相关推荐

Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务