几种常见的位运算

位运算是一种用于对整数类型变量的某一位bit(或几位)直接进行操作的运算,优点是运算速度会比算术运算快;常用的运算符有 & , |,^,~,<<,>>.

&运算 :& 按位与(双目) : 将参与运算的两操作数各对应的二进制位进行与操作,只有对应的两个二进制位都为1时,结果对应二进制才为1,否则为0

例如 : 求 23 & 45

23 用二进制表示就是: 0000 0000 0000 0000 0000 0000 0001 0111

45 用二进制表示就是:​    0000 0000 0000 0000 0000 0000 0010 1101​

二者按位与所得结果是:0000 0000 0000 0000 0000 0000 0000 0101   #  5

| 运算 : | 按位或 (双目)将参与运算的两操作数各对应的二进制位进行或操作,只有对应的两个二进位都为0时,结果的对应二进制位才是0,否则1。

例如 : 求 23 | 45 

23 用二进制表示就是: 0000 0000 0000 0000 0000 0000 0001 0111

45 用二进制表示就是:​    0000 0000 0000 0000 0000 0000 0010 1101​

二者按位或所得结果是:0000 0000 0000 0000 0000 0000 0011 1111   #  63

^ 运算 : ^ 按位异或 (双目)-- 将参与运算的两操作数各对应的二进制位进行异或操作,即只有对应的两个二进位不相同时,结果的对应二进制位才是1,否则为0

例如:求 23 ^ 45 

23 用二进制表示就是: 0000 0000 0000 0000 0000 0000 0001 0111

45 用二进制表示就是:​    0000 0000 0000 0000 0000 0000 0010 1101​

二者按位异或所得结果是:0000 0000 0000 0000 0000 0000 0011 1010   #  58

 异或运算还能实现不通过临时变量 就能交换两个变量的值:  a^b=c ;

                                                                                                c^b = a;

                                                                                                        c^a=b ;

~ 运算 : ~ 按位非 (取反 , 单目)-- 按位非运算符“~”是单目运算符。其功能是将操作数中的二进制位0变成1,1变成0。

例如 : 求 ~55

55 用二进制表示就是: 0000 0000 0000 0000 0000 0000 0011 0111

取反所得结果是:          1111  1111  1111  1111  1111  1111  1100  1000    #  -56

<<左移 (双目): a << b 表示的是:将a各二进位全部左移b位后得到的值。左移时,高位丢弃,低位补0。a 的值不因运算而改变。

例如 : 求 10 << 4

55 用二进制表示就是: 0000 0000 0000 0000 0000 0000 0000 1010

左移四位的结果是 :        0000 0000 0000 0000 0000 0000 1010 0000   # 160

>>右移(双目) : a >> b表示的是:将a各二进位全部右移b位后得到的值。右移时,移出最右边的位就被丢弃。 a 的值不因运算而改变

对于有符号数,在右移时,符号位将一起移动,如果原符号位为1,则右移时高位就补1,原符号位为0,则右移时高位就补0

例如 : 15 >> 2

15的二进制表示 : 0000 0000 0000 0000 0000 0000 0000 1111

15右移2位 :0000 0000 0000 0000 0000 0000 0000 0011  # 3

15右移4位 :0000 0000 0000 0000 0000 0000 0000 0000  # 0

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值