位运算小结

1、补码

十进制转换为二进制需要除2取余,将十进制负整数转换为二进制可以先按照正数转换,然后取反加1

十进制10的二进制表示
0000 0000 0000 1010
取反后
1111 1111 1111 0101
加1
1111 1111 1111 0110

2、按位与(&)

参加运算的两个数换算成二进制后,进行位运算,相应位都为1时取1,否则取0

将10与-10进行按位与运算

0000 0000 0000 1010
1111 1111 1111 0110
-------------------
0000 0000 0000 0010
所以10&-10=0000 0000 0000 0010

3、按位或(|)

参加运算的两个数换算成二进制后,进行位运算,相应位只要存在1时取1,全为0取0

将10与-10进行按位或运算
0000 0000 0000 1010
1111 1111 1111 0110
-------------------
1111 1111 1111 1110
所以10|-10 = 1111 1111 1111 1110

4、按位异或(^)

参加运算的两个数换算成二进制后,进行位运算,相应位不相同取1,相同取0

将10与-10进行按位异或运算
0000 0000 0000 1010
1111 1111 1111 0110
-------------------
1111 1111 1111 1100
所以10^-10 = 1111 1111 1111 1100

任何数与0异或都是其本身,利用异或可以实现一个交换算法,用于交换两个数

a = a^b;
b = b^a;
a = a^b;

5、取反(~)

将二进制的数取反即将各个位的值取反,0变1,1变0

对10进行取反运算
0000 0000 0000 1010
-------------------
1111 1111 1111 0101
所以~10 = 1111 1111 1111 0101

6、左移(<<)

将二进制的数进行左移运算是将各个位向左移动若干位,在后面补0

对10左移2位
0000 0000 0000 1010
-------------------
0000 0000 0010 1000
所以10<<2 = 0000 0000 0010 1000=40

可以观察得到,二进制数左移一位即原10进制数乘以2,左移两位是乘以4

7 右移(>>)

将二进制的数进行左移运算是将各个位向右移动若干位,在左面补0可以

对10右移2位
0000 0000 0000 1010
-------------------
0000 0000 0010 0010
所以10>>2 = 0000 0000 0000 0010=2

观察得到,二进制数右移一位即原10进制数除以2,右移两位是除以4 ,注意是去掉小数位,即向下取整

参考:https://blog.csdn.net/mengzhengjie/article/details/80611422

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值