java 按位计算

 

 

public class TestByte {

	public static void main(String[] args) {
		
		testNot();
		testOR();
		testAnd();
		testLeftMove();
		testRigthMove();
		testNosige();
		xor();
		
	}
	/**
	 * 测试非
	 * ~
	 *结果
	 *  .. -4 -3 -2 -1 0 1 2 3 ..
	 *  0-->-1
	 *  1-->-2
	 *  2-->-3
	 *  3-->-4
	 *  -1-->0
	 *  -2-->1
	 *  -3-->2
	 */
	public static void testNot(){

		int i=0;
		int j=1;
		int t=2;
		int k=3;
		println(~i,"测试非~0");
		println(~j,"测试非~1");
		println(~t,"测试非~2");
		println(~k,"测试非~3");
		System.out.println("");
		
		j=-1;
		t=-2;
		k=-3;
		println(~j,"测试非~-1");
		println(~t,"测试非~-2");
		println(~k,"测试非~-3");
		System.out.println("------------------------------");
		
		
		
	}
	/**
	 * 换成二进制,要组成相同的位数;再进行比较;最后换成10进制
	 * 1-->1=1
	 * 1-->0=1;
	 * 0-->1=1;
	 * 0-->0=0;
	 * 测试位或 
	 * |
	 */
	public static void  testOR(){
		println(4|20,"测试位或 4|20");
		println(5|12,"测试位或 5|12");
		println(6|28,"测试位或 6|28");
		println(7|4,"测试位或 7|4");
		System.out.println("------------------------------");
		
		
	}
	/**
	 * 换成二进制,要组成相同的位数;再进行比较;最后换成10进制
	 * 1-->1=1
	 * 1-->0=0;
	 * 0-->1=0;
	 * 0-->0=0;
	 * 测试位与 
	 * &
	 */
	public static void  testAnd(){
		println(20&4,"测试位与 20&4");
		println(12&5,"测试位与 12&5");
		println(28&6,"测试位与 28&6");
		println(4&7,"测试位与4&7");
		System.out.println("------------------------------");
		
	}
	/**
	 * 
	 * 测试左移 
	 * <<
	 */
	public static void testLeftMove(){
		
		/**
		 * 8左移3位
		 * 8的二进制是:1000;最后要判断8是的类型;类型不同;转换的结果也不能;int=32位;long=64位;byte=1位
		 * 这里8是int;所以8的最后结果是:0000 0000 0000 0000 0000 0000 0000 1000
		 * 向左去掉三位;最后在右边补三位;结果是:0 0000 0000 0000 0000 0000 0000 1000 000
		 * 然后换成十进制是64
		 * 
		 */
		println(8<<3, "8左移3位");
		println(35<<3, "35左移3位");
		System.out.println("------------------------------");
	}
	/**
	 * 测试右移 
	 * >>
	 */
	public static void  testRigthMove(){
		/**
		 * 12右移3位
		 * 12的二进制值是: 0000 0000 0000 0000 0000 0000 0000 1100
		 * 向右去掉三位;最后在左边补三位;结果是:000 0000 0000 0000 0000 0000 0000 0000 1
		 * 然后换成十进制是1
		 */
		println(12>>3, "12右移3位");
		println(25>>3, "25右移3位");
		System.out.println("------------------------------");
	}
	/**
	 * 测试无符号算数右移
	 *  >>>
	 */
	public static void  testNosige(){
		/**
		 * 无符号右移好像和右移算位一样哦;不过要确定数值类型
		 */
		println(48>>>3, "48无符号右移3位");
		println(101>>>3, "101无符号右移3位");
		System.out.println("------------------------------");
	}
 
        /**
	 * 异或
	 * 	真^假=真
  	 *	假^真=真
     *  假^假=假
  	 *  真^真=假
	 *  1-->1=0
	 *	1-->0=1;
	 *	0-->1=1;
	 *	0-->0=0;
	 */
	public static void xor(){
		//异或
		System.out.println(true^false);
		System.out.println(false^true);
		System.out.println(true^true);
		System.out.println(false^false);
		/**
		 * 1=010
		 * 6=110
		 * 结果是:100换成十进制就是4
		 */
		System.out.println(2^6);
		System.out.println(6^1);
		System.out.println(6^6);
		System.out.println(0^0);
		System.out.println(1^1);
		
	}
	public static void println(Object j,String msg){
		System.out.println(msg+":\t"+j);
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值