题目:编写一个具有两个常量值得程序,一个具有交替的二进制位1和0,其中最低有效位为0.另一个也具有交替二进制位1和0,但是其最低有效位为1.
取这两个值,用按位操作符以所有可能的方式结合他们。
分析:
使用十六进制常量来表示最合适,也最简单。
import java.util.*;
public class test {
public static void main(String[] args) {
Integer a=0xaaaa;
Integer b=0x5555;
System.out.println("a="+Integer.toBinaryString(a)+" b="+Integer.toBinaryString(b));
//与
System.out.println("a&b="+Integer.toBinaryString(a&b));
//或
System.out.println("a|b="+Integer.toBinaryString(a|b));
//异或
System.out.println("a^b="+Integer.toBinaryString(a^b));
//非
System.out.println("~a="+Integer.toBinaryString(~a));
System.out.println("~b="+Integer.toBinaryString(~b));
}
}
结果:
a=1010101010101010 b=101010101010101
a&b=0
a|b=1111111111111111
a^b=1111111111111111
~a=11111111111111110101010101010101
~b=11111111111111111010101010101010
可以发现执行非操作前面有很多1那是因为int型占32位,高位并没有使用