实际开发过程中,位运算有着相当广泛的应用,并且相对于算术运算,位运算的计算速度往往更快。本节就讲解一些使用位运算解决问题的经典例子。
8.4.1判断整数的奇偶性
按照传统的思路,判断一个整数的奇偶性是通过用这个数与2求模,看运算结果是否为0。其实使用位运算也能判断整数的奇偶性。我们知道:Java语言中,所有数字存储在内存中,都要先转换成补码的形式。任何一个偶数用补码表示出来后,它的最后一个二进制位都是0,而奇数补码的最后一个二进制位都是1。假设要判断奇偶性的整数是a,我们就可以通过判断a的补码的最后一位二进制数是0还是1从而判断出a是偶数还是奇数。判断的方法就是用a与1进行按位与的操作,如果结果为0,那么a就是偶数,如果结果为1,a就是奇数。这个判断原理可以用图8-23说明:
图8-23 判断整数奇偶性原理
图8-23中以横线为界,分别展示了a为偶数和奇数的情况下判断奇偶性的运算结果。以下【例08_05】展示了用位运算判断整数奇偶性的完整实现过程: