JAVA-初步认识-第三章-移位运算符练习

一. 用学习到的位运算符参与计算

 

现在我们探讨如何高效地进行2*8(如果想利用左移来提高运算效率,必须是2的次幂),在了解如何提高效率之前,我们要先知道计算机一般地是怎么进行乘法运算的。

上图就是正常乘法运算的流程图(对于上面的运算,其实省略了左侧的很多的0)。想提高效率,就要使用移位运算。

移位运算是直接操作二进制位。→我们如果以计算时的步数来作为效率的体现,那么这里的移位运算只需要两步就可

完成运算,但是按照正常的乘法运算需要很多步

通过对2的次幂的数的乘法和除法的计算过程研究,人们发现核心就是移位,从而设计了移位运算符。

 

以目前的讲解来看,移位运算符本质上是为了提高乘法和除法运算的效率。

二. 对两个整数变量的值进行互换,不需要借用第三个变量

常见的两个整数变量之间进行互换是采用,第三方变量。

如果要避免第三方变量,可以采用求和相减的方式,a=a+b, b=a-b, a=a-b.但是这种方法不建议用,

如果两个变量数值过大,会造成精度缺失。(精度缺失问题确实值得好好研究,目前还不是很懂。)→四则运算的过程中,精度缺失的问题始终是要注意的问题。

这里采用另一种计算,异或的方式。a=a^b, b=a^b, a=a^b. →a=3^5; b=3^5^5; a=3^5^3。注意:这里暴露出一点,对于异或运算

的本质理解不清。a^b和b^a结果是一样的,仔细想想异或位运算的过程就知道了,也不会超出范围。

异或运算的两个数,改变两个数的先后顺序,不影响结果。

 

posted @ 2017-09-03 15:27  前锋营  阅读(284)  评论(0编辑  收藏  举报