⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitoperand.java

📁 关于java编程的一些练习题。内附习题及源码文件。。。。系列二
💻 JAVA
字号:
//: BitOperand.java

//package g3ds.joop.ch3;

public class BitOperand{
	public static void main(String[] args){
		boolean b1=true, b2=false;
		System.out.println("若有布尔型数:b1=true, b2=false,布尔逻辑运算结果:");
		System.out.println("  b1 & b2 = " + (b1 & b2));
		System.out.println("  b1 | b2 = " + (b1 | b2));
		System.out.println("  b1 ^ b2 = " + (b1 ^ b2));
		
		int a,a1,b,r,r1,s,t,t1,w,w1,x,y,x1,z,z1;

		a = 22; 	//int为32位  0000 0000 0000 0000 0000 0000 0001 0110
		a1 = -22; 	//int为32位  1000 0000 0000 0000 0000 0000 0001 0110
					//反码       1111 1111 1111 1111 1111 1111 1110 1001
					//补码       1111 1111 1111 1111 1111 1111 1110 1010
		b = 3; 		//int为32位  0000 0000 0000 0000 0000 0000 0000 0011
		System.out.println("若有整型数:a = 22,a1 = -22,b = 3");

		//按位逻辑运算
		r = a & b; // a & b = 0000 0000 0000 0000 0000 0000 0000 0010 = 2
                r1= a1& b;
		s = a | b; // a | b = 0000 0000 0000 0000 0000 0000 0001 0111 = 23
		y = a ^ b; // a ^ b = 0000 0000 0000 0000 0000 0000 0001 0101 = 21
		System.out.println("按位逻辑运算");
		System.out.println("  按位与结果:a & b = " + r);
                System.out.println("  按位与结果:a1& b = " + r1);
		System.out.println("  按位或结果:a | b = " + s);
		System.out.println("  按位异或结果:a ^ b = " + y);

		//按位取反
		z = ~ a; 	// ~a = 1111 1111 1111 1111 1111 1111 1110 1001(补码)=-23
		z1 = ~ a1; 	// ~ a1 = 0000 0000 0000 0000 0000 0000 0001 0101 = 21
		System.out.println("按位取反");
		System.out.println("  按位取反结果:~ a = " + z);
		System.out.println("  按位取反结果:~ a1 = " + z1);
       
		//按位左移运算<<:正数左移低位补0,负数左移也是低位补0
		t = a << b; 	// a << b = 0000 0000 0000 0000 0000 0000 1011 0000 = 176
		t1 = a1 << b; 	// a1 << b = 1111 1111 1111 1111 1111 1111 0101 0000 = -176
		System.out.println("按位左移运算<<");
		System.out.println("  按位左移结果:a << b = " + t);
		System.out.println("  按位左移结果:a1 << b = " + t1);
       
		//按位右移运算>>应考虑符号:正数右移高位补0,负数右移高位补1
		w = a >> b; 	// a >> b = 0000 0000 0000 0000 0000 0000 0000 0010 = 2
		w1 = a1 >> b; 	// a1 >> b = 1111 1111 1111 1111 1111 1111 1111 1101(补码) = -3
		System.out.println("按位右移运算>>");
		System.out.println("  按位右移结果:a >> b = " + w);
		System.out.println("  按位右移结果:a1 >> b = " + w1);

		//按位右移运算>>>不考虑符号:正数和负数右移高位均补0
		x = a >>> b; 	// a >>> b = 0000 0000 0000 0000 0000 0000 0000 0010 = 2
		x1 = a1 >>> b; 	// a1 >>> b = 0001 1111 1111 1111 1111 1111 1111 1101 = 536870909
		System.out.println("按位右移运算>>>");
		System.out.println("  按位右移结果:a >>> b = " + x);
		System.out.println("  按位右移结果:a1 >>> b = " + x1);

		//移位运算时,移动位数根据相应类型位数先取模后运算
		b = 3 + 5 * 32;
		x = a >>> b; 	// a >>> b = 0000 0000 0000 0000 0000 0000 0000 0010 = 2
		x1 = a1 >>> b; 	// a1 >>> b = 0001 1111 1111 1111 1111 1111 1111 1101 = 536870909
		System.out.println("移位运算时,b = 3 + n * 32 的结果与 b = 3 一样:");
		System.out.println("  按位右移结果:a >>> b = " + x);
		System.out.println("  按位右移结果:a1 >>> b = " + x1);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -