当前位置:首页 > 开发 > 编程语言 > Java > 正文

JAVA的位操作符

发表于: 2013-03-28   作者:greemranqq   来源:转载   浏览:
摘要: 最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。   1.按位操作符 :    按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。    与(&)运算:    1&1 = 1, 1&0 = 0, 0&0 &

最近几种进制,加上各种位操作符,发现都比较模糊,不能完全掌握,这里就再熟悉熟悉。

 

1.按位操作符 :

   按位操作符是用来操作基本数据类型中的单个bit,即二进制位,会对两个参数执行布尔代数运算,获得结果。

   与(&)运算:

   1&1 = 1, 1&0 = 0, 0&0  = 0; 这里相当于做乘法,也可以认为男女双方都有感觉才有结果。

   或(|)运算:

   1 | 1 = 1, 1|0=1, 0|0 = 0;这表示条件宽松,只有有一方有感觉,都可以有结果。

   异或(^)运算

   1 ^ 1 = 0; 1^0 = 1;0 ^ 0 = 0; 这表示两个冤家,非要不同,经过磨难才能有结果。

    上面都是二元操作符,而 非(~) ,是一元操作符,也叫取反操作。连符号位 也会取反哦,

    

    

    注意:上面的二元操作符可以和 “=”连用,比如:&=,|=。 一元非不行

 

2.移位操作符

   这也是操作二进制的。

   >> <<: 带符号的左右移位,也就是说移动之后,高低位 补 0 还是1 根据 正负数判定。1 负数,0正数

   >> >:  无符号右移,无论正负数,前面(高位)都补0

   注意:所有的位移运算都会先转换成 int 到二进制,再进行操作。先看移动过程

 

   

	public static void main(String[] args) {
	int a = 2;
	// 原始数据
	System.out.println(Integer.toBinaryString(a));
	//00000000000000000000000000000010  前面的0,会被省略
	System.out.println(Integer.toBinaryString(-a));
	//11111111111111111111111111111110
	
	// 带符号的 右移动,这里用负数,方便观察
	
	System.out.println(Integer.toBinaryString(-a>>1));
	//原始:11111111111111111111111111111110
	//现在:11111111111111111111111111111111 比较,右移1位,前面自动加符号1
	
	System.out.println(Integer.toBinaryString(-a<<1));
	//原始:11111111111111111111111111111110
	//现在:11111111111111111111111111111100 比较,左移1位,后面默认加0 
	
	// 看无符号 移动,也就是不管前面符号位
	System.out.println(Integer.toBinaryString(-a>>>1));
	//原始:11111111111111111111111111111110
	//现在:1111111111111111111111111111111   比较,发现少了一位,因为无符号,默认前面补0
	
	// 这个无符号 ,不能左移动 - -!
	//System.out.println(Integer.toBinaryString(-a<<<1));
	}

 

     下面看看 特殊的移动。

    

byte b = 127;
	System.out.println("原始:"+Integer.toBinaryString(b));
	//原始:1111111
	//现在:11111110  这里移动了就是254了,已经默认转换成int 了。
	System.out.println(b<<1);
	// 这里如果强行转byte,会得到 -2.
	// int 和 byte 的转换,超过127,128 就会 成 -128,129 就成 -127.这样循环。
	
	
	int c =1;
	// 因为int 只有32位,到31位的时候,就成负数了。
	// 如果继续移动,就开始循环了。
	for(int i =1;i<34;i++){
		System.out.println(i+" : "+Integer.toBinaryString(c<<i));
		System.out.println(c<<i);
		}
	}

 

  这里就是一些简单的位移运算 方式了

   

JAVA的位操作符

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
本文将介绍Python语言的一种基本数据类型:数值类型。首先,我们会详细介绍Python语言各种数值类型
本文将介绍Python语言的一种基本数据类型:数值类型。首先,我们会详细介绍Python语言各种数值类型
Scala包含了可以对整数类型的单个位执行操作的若干位操作方法:按位与运算(&)、按位或运算(|)和
题记:记乔布斯辞世,天堂也有了iphone! 程序的基本功能是处理数据,任何编程语言都有自己的运算符
运算符归类: 一元运算符:逻辑运算符(!),非运算符(~) 二元运算符:复制运算符(=),逻辑与运算符(&
技术只有落实到工程当中才显得那么有血有肉,之前学J2SE的时候运算符这块没有多在意,前一段时间实
技术只有落实到工程当中才显得那么有血有肉,之前学J2SE的时候运算符这块没有多在意,前一段时间实
??: 如果操作符左边的变量不为空,则返回变量的值, 否则返回其右边(变量)的值. 例: // nullable_type
所有的操作符都能操作基本类型, “=“, “==“和”!=“能操作所有对象, String类型支持”+”和”+=
//Java中的位运算 /*计算机由复杂电子元器件构成,一个电子元器件有带电和不带电的两种状态,1和0
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号