1.在不使用變量的情況下,使兩個變量交換值。
這個題目很經(jīng)典,面試時會有基礎(chǔ)題會問。面試官會考察你性能優(yōu)化方面的技術(shù),管中窺豹,可見一斑。
比如a = 3, b = 5。請在不借助其他變量的情況交換a,b的值。
解題思路是,使用異或運算符。
測試代碼如下:
import java.util.Scanner;
public class Export {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入變量A的值:");
long a = scanner.nextLong();
System.out.println("請輸入變量B的值:");
long b = scanner.nextLong();
System.out.println("現(xiàn)在a=" + a +"\tb=" + b);
System.out.println("開始執(zhí)行變量互換...");
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println("現(xiàn)在a = " + a + "\tb = " + b);
}
}
那么,什么是異或運算符呢,它是怎么使用的呢?
異或是一種基于二進(jìn)制的位運算,用符號XOR或者 ^ 表示,其運算法則是對運算符兩側(cè)數(shù)的每一個二進(jìn)制位,同值取0,異值取1。
3的二進(jìn)制為:00000011
5的二進(jìn)制為:00000101
根據(jù)同取0,異取1的原則,進(jìn)行運算。
a = a ^ b; // 00000011 ^ 00000101 = 00000110 (6)
b = b ^ a; // 00000101 ^ 00000110 = 00000011 (3)
a = a ^ b; // 00000110 ^ 00000011 = 00000101 (5)
2.判斷一個數(shù)的基偶
思路:采用求余運算。