Java中的按位取反操作符(~),表示将数的每个bit位取反,即0变为1,1变为0,符号位也变。
假设数值是x,那么对x按位取反后值变为(-x)-1。
代码示例:
package com.thb;
public class Test1 {
public static void main(String[] args) {
// 注意:0xFF实际是int型,展开是0x000000FF
System.out.println("0xFF的值是:" + 0xFF);
// 按位取反,展开是0xFFFFFF00,注意是补码表示,转换为原码是0x80000100,表示-256
System.out.println("对0xFF按位取反后的值是:" + (~0xFF));
// 对对0xFF强制转化为byte型后,展开也是0xFF,这是补码,转换为原码是0x81,表示-1
System.out.println("对0xFF强制转化为byte型值是:"+ (byte)0xFF);
// 对(byte)0xFF按位取反,结果是0x00,表示0
System.out.println("对(byte)0xFF按位取反,值是:" + (~((byte)0xFF)));
}
}
运行输出: