位运算

位运算整理

优先级

运算符含义使用形式结合方向说明优先级
~按位取反flags = ~flags;右到左单目3
<<左移int flags = 33 << 1;左到右双目7
>>右移int flags = 33 >> 1;左到右双目7
&按位与flags = flags & 42;左到右bitand10
^按位异或flags = flags ^ 42;左到右xor11
|按位或flags = flags42;左到右bitor

左移

左移n位就是乘以2的n次方。

功能:把"<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0

右移

快速除
右移n位就是除以2的n次方

功能:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。

说明:对于有符号数,在右移时,符号位将随同移动。
当为正数时, 最高位补0,而为负数时,符号位为1。
最高位是补0或是补1 取决于编译系统的规定。
对于有符号整数来说,比如int类型,右移会保持符号位不变。

按位与

应用:
判断int型变量a是奇数还是偶数:a&1=0 偶数, a&1 = 1 奇数

应用

  • 取int型变量a的第k位 (k=0,1,2……sizeof(int)),即a >> k & 1
  • 将int型变量a的第k位清0,即a = a &~ (1 << k)
  • 将int型变量a的第k位置1, 即a = a | (1<<k)
  • int型变量循环左移k次,即a = a << k | a >> 16 - k (设sizeof(int) = 16)
  • int型变量a循环右移k次,即a = a >> k |a << 16-k (设sizeof(int) = 16)

注意事项

位运算是对字节或字中的实际二进制位进行检测、设置或移位,只适用于字符型和整数型变量以及它们的变体,对其它数据类型不适用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值