位操作符

位操作,个人喜欢它的高效。 自从有机会参与一个大型商务网站开发和运营以来,有幸学习如何高效的编写代码,以及性能调优。这个说起来很玄乎,有种高深莫测的感觉,但是具体实施起来,就是把代码写对了,把机器设置对了而已。大家有点经验的都知道,不管是代码,还是我们使用的服务器,它们都有自己默认的设置,所谓默认的也就是大众化的。其目的都是为了容易让人使用。上周我买了一个黑莓,很好用,就是内存小了点(其实还有18),我还是花了几天的时间让它多出了30多M的空间才罢休,即使这样我失去了很多我根本用不着的功能。 我认为代码也是同样的情况,计算机最最原始的就是0和1了,听说有牛人能用它俩来写代码,我那个佩服啊--牛人。我不是天才,只能偶尔在一些环境中使用它们,因为使用01确实是最快的代码了。比如左移一(size<<1)1和右移一(size>>1),它们一个代表乘以2,一个代表除以2,这个应用我是在solr源码的NameList.java类中看到的,个人觉得很震撼。所以查看了其他的位操作符。 '&'与操作,有人用它来代替true和false的判断。比如有0x00000001、0x00000010两个常数(也称为掩码),分别代表true和false。还有一个未知数x。如果x与掩码做'与'运算,即if(x&(0x00000001)>0),则说明x的值在逻辑上为true;相反则为false。 '|'非运算,个人觉得多用于设置位的值。比如上面的列子,如果要把某的x设置为true,可以使用x|(0x00000001)即可。 还有一个密码学中常用的异或运算(^),这个挺有趣的。比如a^b=c;c^b=a;这两个表达式要表达的是,如果有一个数a(原文),它与b(密码本)进行异或计算,得到结果c(密文);如果再把c(密文)与b(密码本)进行异或运算,就能重新得到a(原文)。 最后要说的'~'反运算符,也就是把一个数的各位一次取反,1变为0,0变为1。一般与‘&’、‘|’等位操作符一起使用。 我们经常使用的各种运算,其实都是基于各种位操作符的搭配实现的。不记得原话了,但是有句话大概说,计算机实际就是一个关于中间层的科学。我当时理解是,我们使用的语言都是对其他低级语言的封装,我们使用的API都是对其他较低级的API的封装,也就是高级封装低级,这里的高级和低级只是针对功能而言,不代表性能和其他。封装的东西功能强大,可是大多时候就像自己的手机一样,很多功能我们不曾使用,可是它占用了不必要的空间。 所以偶尔关注底层的实现,学习并应用它们,会得到惊喜的回报。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值