在 Java 中,取反操作包括兩種,即邏輯取反和按位取反。
邏輯取反使用 "!" 運(yùn)算符,可以將一個布爾類型的值取反,如下所示:
boolean flag = true; flag = !flag; System.out.println(flag); //輸出 false
按位取反操作使用 "~" 運(yùn)算符,可以將一個整數(shù)的二進(jìn)制表示的每一位取反,如下所示:
int num = 8; //二進(jìn)制表示為 0000 1000 num = ~num; //取反后二進(jìn)制表示為 1111 0111,對應(yīng)的十進(jìn)制值為 -9 System.out.println(num);
需要注意的是,按位取反后得到的結(jié)果是一個負(fù)數(shù),因為 Java 中采用了補(bǔ)碼的方式表示負(fù)數(shù)。比如上面的例子中,原數(shù)為 8,二進(jìn)制表示為 0000 1000,按位取反后得到的結(jié)果是 1111 0111,這個二進(jìn)制數(shù)對應(yīng)的十進(jìn)制數(shù)是 -9,因此得到的結(jié)果是負(fù)數(shù)。