简单方便的位运算

位运算是把数值转化为01来进行计算的,更贴近计算机底层。

位运算主要是:按位与(&),按位或(|),按位异或(^),左移(<<),右移(>>),取反(~)这六种。下面我们一一来讨论。

既然位运算是把数值转化为二进制,那么首先需要学会转化。

一个整数一个负数分别举例。

 234转化为二进制:

234=128+64+32+8+2=1110101
加上一个符号位那就是:01110101

-156转化位二进制:

首先转化负数的绝对值
156=128+16+8+4=1001110
然后各位取反,末位加一
 1001110
~      
---------
 0110001
+      1
---------
 0110010

再加上一个符号位:
10110010

先从最简单的取反说起吧:

取反在把负数转化为二进制的时候已经用到了。

就是把每一位都取反,1换成0 ,0换成1,比如10010取反如下:

 10010
~
-------
 01101

按位与(&)

按位与把二进制的每一位对应进行与操作。举例说明:

10010 & 01010

   10010
 & 01010
---------
   00010 

按位或(|)

按位进行或操作,举例说明:

10010 | 01010

 10010
|01010
-------
 11010

按位异或(^)

异或就是如果两个对应的位不相同的取1,相同取0

10010 ^01010

   10010
 ^ 01010
---------
   11000

左移以及右移

左移几位就是把数字整体向左移动几位,后边补0,移动几位乘以2的几次方。右移就是除以2的几次方,前边补0.

比如 10010 >>2  ,  10010<<2

   10010 
>>2
---------
   00100

 
    10010
<<2
 ---------
    01000

当然在整数计算的时候需要先把整数转化为二进制。

来用左移算一道题:

 123 * 243 

123 * 243 = 123 * 128 +123 * 64 + 123 * 32 + 123 * 16 + 123 *2 +123 * 1
=123<<7 + 123 <<6 + 123 <<5 + 123 <<4 + 123 <<1 + 123 

这样算起来是不是简单多了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值