public class Test {
public static void main(String[] args) {
int i = 1;// 0000 0000 0000 0001 操作数1 1<<0
int j = 8;// 0000 0000 0000 1000 操作数1 1<<3
int k = i | j;// 9 0000 0000 0000 1001 只要同位存在1, 则都为1
int l = i ^ j;// 9 0000 0000 0000 1001 同位不同的运算结果为1,相同的为0(都为1, 都为0)。
int h = 9 & 8;// 1 0000 0000 0000 0000 同位都为1,才为1,就是都是真,才是真,1表示true,0表示false
int d = ~ j; // -9 0000 0000 0000 1000 原码 (正数的原码、反码、补码一样)
// 0000 0000 0000 1000 反码
// 0000 0000 0000 1000 补码
// 1111 1111 1111 0111 非运算,取反, 得到非运算后的值的反码
// 1111 1111 1111 1110 获取补码
// 1000 0000 0000 0001
int p = -5;// 1000 0000 0000 00101 原码
// 1111 1111 1111 11010 反码 最高位不变,其它位取反
// 1111 1111 1111 11011 补码 反码 + 1
System.out.println("或位运算:" + k + "\t只要同位存在1, 则都为1");
System.out.println("异或位运算:" + l + "\t同位不同的运算结果为1,相同的为0");
System.out.println("按位与:" + h + "\t\t同位都为1,才为1,就是都是真,才是真,1表示true,0表示false");
System.out.println(d);
}
}
关于java中位运算的测试代码记录
最新推荐文章于 2023-07-20 14:54:56 发布