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结果是一样的,仔细想想异或位运算的过程就知道了,也不会超出范围。
异或运算的两个数,改变两个数的先后顺序,不影响结果。