题目:编写一个具有两个常量值得程序,一个具有交替的二进制位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位,高位并没有使用