题目:
编写一个具有两个常量值的程序,一个具有交替的二进制位1和0, 其中最低有效位为0,另一个也具有交替的二进制位1和0,但是其最低有效位为1 (提示:使用十六进制常量来表示是最简单的方法). 取这两个值,用按位操作符以所有可能的方式结合运算它们,用三元操作符合按位操作符来显示二进制的1和0。
解答:
import java.util.*;
public class chapterFour {
public static void main(String[] args){
int a = 0xaaaa;
int b = 0x1111;
System.out.print("a = ");
toBinaryString(a);
System.out.println(" ");
System.out.print("b = ");
toBinaryString(b);
System.out.println(" ");
System.out.print("~a = ");
toBinaryString(~a);
System.out.println(" ");
System.out.print("~b = ");
toBinaryString(~b);
System.out.println(" ");
System.out.print("a & b = ");
toBinaryString(a & b);
System.out.println(" ");
System.out.print("a | b = ");
toBinaryString(a | b);
System.out.println(" ");
System.out.print("a ^ b = ");
toBinaryString(a ^ b);
System.out.println(" ");
System.out.print("a & a = ");
toBinaryString(a & a);
System.out.println(" ");
System.out.print("a | a = ");
toBinaryString(a | a);
System.out.println(" ");
System.out.print("a ^ a = ");
toBinaryString(a ^ a);
}
public static void toBinaryString(int i){
char[] buffer = new char[32];
int bufferPosition = 32;
do{
buffer[--bufferPosition] = ((i & 0x01) != 0) ? '1' : '0';
i >>>= 1;
} while(i != 0);
for(int j = bufferPosition; j < 32; j++){
System.out.print(buffer[j]);
}
}
}
结果如下:
如果觉得不错,就用点赞或者关注来代替五星好评吧!谢谢了!