复习C语言 位运算

0x01:按位与(&)

作用:

1)清零。如果想让一个单元清零,即使其全部二进制位为0

2)取一个数中某些指定位。即将想要的那些位置1.

例:如有一个整数a(2个字节),想要其中的低字节,只需将a与(377,8进制 == 00000000 11111111)按位与即可。

3)要想将哪一位保留下来,就与一个数&运算,此数在该位取1.

0x02:按位或(|)

作用:

常用来对一个数据的某些位定值1,例:a(16位整数),a|0377,则低8位全置1,高8位保持原样

0x03:异或(^)

作用:

1)使特定位翻转

假设有01111010,想使其低4位翻转,即1变0,0变1,。可以将它与00001111进行^运算。

2)与0相^保留原值

3)交换两个值,不用临时变量

假设a=3,b=4

a=a^b;

b=b^a;

a=a^b;

0x03:取反(~)

作用:

若一个整数,若想使最低一位为0,可以用一致性较好的a=a&~1;(~运算符优先级比算术运算符,关系运算符,逻辑运算符和其他运算符都高)

0x03:左移(<<)

作用:

高位左移后溢出,舍弃.

一般用来取低位

0x04:右移(>>)

作用:

低位右移后被舍弃,对无符号数,高位补0

一般用来取低位

右移一位相当于除以2,右移n位相当于除以2的n次方

注意:在右移时,需要注意符号位的问题。对无符号数,右移时左边高位移入0,对于有符号数,如果原来符号位为0(该数为正),则左边也是移入0,如果符号位原来为1(即负数),则左边移入0还是1,取决于计算机系统。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值