Java常用按位运算符

原创 2012年03月25日 14:51:28

首先,解释下什么是按位运算。按位运算是指先将运算的操作数先分解成二进制位,再根据二进制位进行运算。

我们都知道,计算机只能识别二进制数1和0。因此通常来说,按位运算比普通运算效率快很多。

Java提供的常用按位运算符:

1、按位与运算符(&):

1 & 1 = 1; 1 & 0 = 0; 0 & 1 = 0; 0 & 0 = 0;即只有当参与运算的两个对应二进制位都为1的情况下结果位才为1,否则都为0,类似于逻辑与运算符&&。

2、按位或运算符(|):

1 | 1 = 1; 1 | 0 = 1; 0 | 1 = 1; 0 | 0 = 0;即只有当参与运算的两个对应二进制位都为0的情况下结果位才为0,否则都为1,类似于逻辑或运算符||。

3、按位异或运算符(^):

1 ^ 1 = 0; 1 ^ 0 = 1; 0 ^ 1 = 1; 0 ^ 0 = 0;即只有当参与运算的两个对应二进制位为异(值不同)的情况下结果位才为1,否则为0。

4、按位取反运算符(~):

~1 = 0; ~0 = 1;这是个一元运算符,按二进制位进行“取反”运算。

5、按位左移运算符(<<):

表达式:a << n

<1>a为操作数,n为左移的位数。

<2>将a的各个二进制位左移n位,相当于丢弃a中二进制位的前n位,并向a中二进制位向后补n位。

例如:2 << 2;

2的二进制表示形式为:00000010(只保留8位,前面为0的二进制位已省略);

2左移2位后为:00001000(只保留8位,前面为0的二进制位已省略);

00001000就是2左移2位后的二进制表示结果,用十进制表示为8,即2的3次方。

<3>按位左移的规律总结:

只要操作数a是2的次幂的结果,则a << n 等效于 a  *  2的n次幂;例如:2 << 2  = (2 * 2的二次方) =  8

6、按位右移运算符(>>):

与按位左移运算符相反。

7、按位符合运算符:

a &= b 等效于a = a & b;

a |= b 等效于a = a | b;

a ^= b 等效于a = a ^ b;

a <<= b 等效于a = a << b;

a >>= b 等效于a = a >> b;

这些用法类似于java中的“+=”、“-=”、“*=”、“/=”等复合运算符。


按位运算符(>> << ~ & ^ | )及实例

1.移位运算符 :运算符>的操作数可以是任意整型或字符型的。对两个操作数都会进行整型提升,返回的类型是左边操作数提升后的类型。    i    i>>j的值是将i中的位右移j位后的结果。如果i...
  • leewokan
  • leewokan
  • 2013年08月08日 20:14
  • 4110

js中的位运算符(按位与、按位或、按位异或)的使用方法

var a=1; var b=0; //按位与&:两个操作数都是1,结果才是1 alert(a&b) //结果是0 //按位或:两个...
  • xuehyunyu
  • xuehyunyu
  • 2017年06月21日 21:49
  • 1720

PHP位运算符详解

位运算符位运算符是指对二进制位从低位到高位对齐后进行运算。 符号 作用 举例 个人理解 & 按位与 $m & $n 全1为1,否则为0 | 按位或 $m | ...
  • qq_28602957
  • qq_28602957
  • 2016年08月07日 10:46
  • 3407

浅谈我对Java位运算符的了解

在JAVA程序里,支持位运算。 已知位运算有7种, —— 请看如下图。 左移运算,往左移动多少位,就是乘以2的多少位次幂。 特点:往左边移动,就是乘以。移动后的值,比原来的值大。 ...
  • xoptimal
  • xoptimal
  • 2014年12月22日 21:21
  • 309

按位运算符的运用

按位运算符的运用: C语言中提供了6个位操作符。这些运算符只能作用于整型操作数,即只能作用于带符号或无符号的char、short、int与long类型: &  |  ^   >>  1.按...
  • baidu_27286011
  • baidu_27286011
  • 2015年05月04日 10:03
  • 343

按位运算符

按位运算符: & 按位与 |按位或 ^按位异或 ~取反 >>右移 左移 1 & 运算符 &是二元运算符,它以特定的方式的方式组合操作数中对应的位 如果对应的位都为1,那么结果就...
  • u013291076
  • u013291076
  • 2015年04月13日 15:06
  • 300

按位运算符

3.3  按位运算符在进入本章的大型示例之前,还要先学习一组运算符,它们看起来类似于前面介绍的逻辑运算符,但实际上与逻辑运算符完全不同。这些运算符称为按位运算符,因为它们操作的是整数值中的位。按位运算...
  • jicheng687
  • jicheng687
  • 2009年09月01日 13:34
  • 493

Java中的位运算符(操作数只能是整型和字符型数据)

java中的位运算符有:左移(>)、无符号右移(>>>)、位与(&)、位或(|)、位非(~)、位异或(^),除位异或是一元操作符外,都是二元操作符。 (位运算的实质都是先将十进制数转化为二进制在进行...
  • set_one_name
  • set_one_name
  • 2017年08月08日 13:56
  • 349

Oracle按位运算符

利用bitand实现多种位操作 转:http://www.oracle.com.cn/viewthread.php?tid=83181 ORACLE中为什么只有BITAND而没...
  • junfeng120125
  • junfeng120125
  • 2012年02月22日 14:52
  • 5649

C语言位运算符及常见用法

一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有...
  • xing_hao
  • xing_hao
  • 2011年08月11日 09:46
  • 29022
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java常用按位运算符
举报原因:
原因补充:

(最多只允许输入30个字)