Java[探索](二)按位操作元素


一:按位操作符是什么?

按位操作符来源于C语言面向底层的操作,那么什么是面向底层的操作呢?Java为什么要引入面向底层的操作符呢?


第一个问题:

这种操作经常直接操作硬件,设置硬件寄存器内的二进制位也就是它是直接操作整数基本类型中的单个“比特”的。按位操作符会对两个参数中对应的位执行布尔代数运算,

并最终生成一个结果。

第二个问题:

我们知道Java的设计初衷是嵌入电视机顶盒内的,所以这种面向底层的操作仍被保留了下来,但是这种操作用的并不多


二 四种按位操作符


Java中共有四种按位操作符


1.按位“与”操作符(&)

如果两个输入位都是1,则按位“与”生成一个输出位1;否则生成一个输出位0.


2.按位或操作符(|)


如果两个输入位只有一个是1,则按位“或”操作符生成一个输出位1;只有在这两个输入位都是0的情况下,它才会生成一个输出位0.


3.按位“异或”操作符(^)


如果输入位有一个是1但不全是1,那么按位“异或“操作生成一个输出位1.否则生成一个输出位0


4.按位"非"操作符(~)


按位非是一个一元操作符,其他都是二元操作符,按位非也称为取反操作符,它的作用就是生成与输入位相反的值,若输入0则输出1,同样输入1,输出0


三 注意

1.按位操作符可以于等号联合使用(=),比如:&=、|=、^=,但是按位非(~)不可以


2.按位操作具有和逻辑操作符相同的效果,只是按位操作不会短路。

四 来一个Demo

package deme_one;

public class ExerciseOne {

	
	public static void main(String [] args){
		System.out.println("于");
		new One().one();//与
		new One().two();//或
		new One().three();//异或
		new One().four();// 非
	
	}
}


/**
 * 
 * @author Administrator
 *
 */
class One{
	/**
	 * 与
	 */
	void one(){
		int a=11;
		int b=12;
		System.out.println("**********************于***********************");
	    System.out.println(a&b);	
	    System.out.println(Integer.toBinaryString(a&b));	
	    System.out.println(a&=b);	
	    System.out.println(Integer.toBinaryString(a&=b));
	}
	/**
	 * 或
	 */
	void two(){
		System.out.println("**********************或***********************");
	    System.out.println(11|13);	
	    System.out.println(Integer.toBinaryString(11|13));		
	}
	
	/**
	 * 异或
	 */
	void three(){
		System.out.println("**********************异或***********************");
	    System.out.println(11^13);	
	    System.out.println(Integer.toBinaryString(11^13));		
	}
	/**
	 * 非
	 */
	void four(){
		System.out.println("**********************非***********************");
	    System.out.println(~11);	
	    System.out.println(Integer.toBinaryString(~11));		
	}
}

看看运行结果:


1.a&=b什么意思呢?

a&=b  就是a=a&b;

2.Integer.toBinaryString什么意思?

它返回一个无符号的二进制的字符串


3.来分析下11&12的结果怎么会是1000呢?

11转换成二进制的结果就是1011,二12转成二进制是1100,根据运算只有两个位都是1结果才是1,故结果是1000.或,异或,非的运算方式类似。


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值