动手动脑问题
-
原码:最高位是符号位(0表示正数,1表示负数),其余位表示数值的绝对值。
-
反码:正数的反码与原码相同,负数的反码是对其原码按位取反(符号位除外)得到的结果。
-
补码:正数的补码与原码相同,负数的补码是对其原码按位取反(符号位除外),然后将结果加1。
在Java中,整数默认使用补码表示。
下面是一个示例程序,对正数和负数进行位操作,并输出结果:
public class BitwiseOperations {
public static void main(String[] args) {
int a = 5; // 正数
int b = -3; // 负数
// 与操作
int andResult = a & b;
System.out.println("AND结果:" + andResult);
// 或操作
int orResult = a | b;
System.out.println("OR结果:" + orResult);
// 异或操作
int xorResult = a ^ b;
System.out.println("XOR结果:" + xorResult);
// 左移操作
int leftShiftResult = a << 2;
System.out.println("左移结果:" + leftShiftResult);
// 右移操作
int rightShiftResult = b >> 1;
System.out.println("右移结果:" + rightShiftResult);
// 无符号右移操作
int unsignedRightShiftResult = b >>> 1;
System.out.println("无符号右移结果:" + unsignedRightShiftResult);
}
}
输出结果:
AND结果:1
OR结果:-3
XOR结果:-4
左移结果:20
右移结果:-2
无符号右移结果:2147483646
Java中的数是采用补码表示的。