Java编程思想,运算符,练习5答案解释

import static net.mindview.util.Print.*;

public class BitTest {
	static void binaryPrint(int q) {
		if (q == 0)
			System.out.print(0);
		else {
			int nlz = Integer.numberOfLeadingZeros(q);
			q <<= nlz;
			for (int p = 0; p < 32 - nlz; p++) {
				int n = (Integer.numberOfLeadingZeros(q) == 0) ? 1 : 0;
				System.out.print(n);
				q <<= 1;
			}
		}
		System.out.println("");
	}

	public static void main(String[] args) {
		int i = 1 + 4 + 16 + 64;//1010101
		int j = 2 + 8 + 32 + 128;//10101010
		int k = 0x100;//100000000
		int m = 0;//0
		print("Using Integer.toBinaryString():");
		print("i = " + Integer.toBinaryString(i));//1010101
		print("j = " + Integer.toBinaryString(j));//10101010
		print("k = " + Integer.toBinaryString(k));//100000000
		print("m = " + Integer.toBinaryString(m));//0
		print("i & j = " + (i & j) + " = " + Integer.toBinaryString(i & j));//0
		print("i | j = " + (i | j) + " = " + Integer.toBinaryString(i | j));//11111111
		print("i ^ j = " + (i ^ j) + " = " + Integer.toBinaryString(i ^ j));//11111111
		//取反运算符
		print("~i = " + Integer.toBinaryString(~i));//25个0+1010101,按位取反得到11111111111111111111111110101010
		print("~j = " + Integer.toBinaryString(~j));//同理:11111111111111111111111101010101
		print("Using binaryPrint():");
		print("i = " + i + " = ");//1010101,表示十进制数85
		binaryPrint(i);//1010101
		print("j = " + j + " = ");//10101010,表示十进制170
		binaryPrint(j);//10101010
		print("k = " + k + " = ");//表示十进制256
		binaryPrint(k);//100000000
		print("m = " + m + " = ");//表示十进制0
		binaryPrint(m);//0
		print("i & j = " + (i & j) + " = ");//1010101&10101010,根据与运算法则,全1为1,有0即0,得到0
		binaryPrint(i & j);//0
		print("i | j = " + (i | j) + " = ");//或运算,有1即1,全0则0,即为11111111,十进制表示255
		binaryPrint(i | j);//1111111
		print("i ^ j = " + (i ^ j) + " = ");//异或运算,相同为0,不同为1,即11111111,十进制表示255
		binaryPrint(i ^ j);//1111111
		print("~i = " + ~i + " = ");//-86表示成2进制即为11111111111111111111111110101010,
		//表示过程为,-86变为(无符号)二进制为25个0+1010110,按位取反即25个1+0101001,加1得到11111111111111111111111110101010
		binaryPrint(~i);//11111111111111111111111110101010
		print("~j = " + ~j + " = ");
		binaryPrint(~j);//11111111111111111111111101010101
	}
}

不解释,直接看代码,还望各路大神指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值