这篇文章献给自己的职业——程序员 By Coder的不平凡
今天这篇文章直奔主题,今下午自己在做关于char这个类型深入理解的时候,查到资料,char在java里面是16位,自己思维就到了2的16次方是多少? 随性用cmd输入calc打开计算器,选择程序员型(其实程序员对这个幂的计算式应该比较敏感的,自己还要不断学习和领悟),然后始终找不到幂运算的符号,我记得以前用过这个运算啊,怎么今儿找不到了。在计算器点了半天后,突然“呵呵”一笑,我忘记了我自己的职业——程序员。
恩,对,我是程序员,这么小小的一个运算问题自己随便写一个循环就能算出结果。于是打开Eclipse,写了一个for循环,算出了结果。。。再得到结果的时候我突然想这是不是不太高效? 是不是可以用其他方法来把它算出来? 于是大家也知道,移位操作可以解决,于是输出2<<15就能得到结果。得到结果的我并不满足,我想这两个操作到底谁的速度更快,做了一个测试,毋庸置疑,移位操作的更快,然后我脑海又想起大学里面学的课程《计算机组成原理》,《计算机操作系统》等等(虽然没认真听 - -!)【看来大学里面学的课程不一定全都是没用的,这一点一定要坚信!,相信自己所学的。】,于是得到了下面的思维构图:
我记得以前做过一个测试,把移位和循环来比,看哪个速度更快,有时候循环更快,有时候移位快,从理论上,必须是移位更快啊!!! 于是在网上找相关问题,看到一个人回答的问题:如果目标系统有乘法指令,硬件的乘法比自己移位实现乘法要快,如果目标系统没有乘法指令,编译器会用移位实现乘法,这通常比自己实现的乘法要快; 恩,对,编译器会优化,你想看到效果不一定看的到。
我想这也许是程序员这个职业所给我带来的一些思维上的改变,我想如果以后遇到类似的问题,我也应该用这种求知欲望,多从网上找到一些细节东西,来丰富论证,这样收获的更多吧。
所以:始终记得自己是程序员【这是多么崇高的词啊!!! 可不是贬义词的 :)】 ,体会编程的乐趣。