位运算

位运算

资料:

位运算用补码进行运算,正数的补码就是源码,负数的补码为源码取反加一,计算得出的结果如果是正数,就直接等于补码,若是负数则需减一取反,取反时符号位不变。

& 按位与: 都是1时才为1。
| 按位或: 都是0时才为0。
^ 按位异或: 异为1 ,同为0。
<< 左移: 将一个数取二进制后,进行左移运算,用来将一个数各二进制位全部向左移动若干位。
>> 右移: 将一个数取二进制后,进行右移运算,用来将一个数各二进制位全部向右移动若干位。
~ 取反: 将一个数每个位上都取相反值,1变成0,0变成1。
优先级: 按位取反是位运算符中优先级最高的,然后是算术运算符,其次是<<、>>,然后是关系运算符,最后是&,|,^ 。

举例

1)求10 << 2;
解析:
首先将a转换为二进制,即00001010,现将它左移两位得00101000,在转换回十进制得结果为40。

2)求-25 >> 3;
解析:
首先将b转化为二进制,即10011001,现将它取反得11100110再加一得11100111,然后右移三位得11111100,取反得00000011,然后减一得00000010,转换为十进制得结果为-4 。

3) 若a = 10, b = 20 , 求a & b;
解析:
将a和b转换为二进制后进行比较,仅有二者相等的时候输出1,因为二者不相等,所以输出0 。

4 ) 若a = 10 ,b = 20, 求a ^ b;
解析:
将a和b转化为二进制后一一对应,若相同输出0,相异输出1,得出结果后将二进制转化为十进制得结果为30 。

5)若a = 10 , b = 20 , 求a | b;
解析:
将a和b转化为二进制后一一对应,若同为0时才为0,得出结果后将二进制转化为十进制得结果为30 。

6)若a = 10,求 ~a ;
解析:
将a转化为二进制,00001010,然后取反加1,得11110101,因为是负数,所以再减1取反,得10001011,转换为十进制即为-11 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值