位操作符

位操作,个人喜欢它的高效。 自从有机会参与一个大型商务网站开发和运营以来,有幸学习如何高效的编写代码,以及性能调优。这个说起来很玄乎,有种高深莫测的感觉,但是具体实施起来,就是把代码写对了,把机器设置对了而已。大家有点经验的都知道,不管是代码,还是我们使用的服务器,它们都有自己默认的设置,所谓默认的也就是大众化的。其目的都是为了容易让人使用。上周我买了一个黑莓,很好用,就是内存小了点(其实还有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的封装,也就是高级封装低级,这里的高级和低级只是针对功能而言,不代表性能和其他。封装的东西功能强大,可是大多时候就像自己的手机一样,很多功能我们不曾使用,可是它占用了不必要的空间。 所以偶尔关注底层的实现,学习并应用它们,会得到惊喜的回报。

你可能感兴趣的:(java,solr,api,语言,服务器,黑莓,手机)