现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

位操作符

2012-11-24 23:08 工业·编程 ⁄ 共 1973字 ⁄ 字号 暂无评论

按位操作符

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

位操作符

Operator

Use

Operation

&

op1 & op2

运算op1和op2;如果op1和op2都是布尔值,而且都等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位与操作

|

op1 | op2

算op1和op2;如果op1和op2都是布尔值,而且有一个等于true,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位或操作

^

op1 ^ op2

运算op1和op2;如果op1和op2不同,即如果有一个是true,另一个不是,那么返回true,否则返回false;如果op1和op2都是数字,那么执行位异或操作

~

~op2

位补,即反转op2的每一位,如果位是1,结果是0,如果位是0,结果是1

如果两个输入位里只要有一个是1,操作符与运算&便会生成一个1,否则生成出0,如果两个输入位里只要有一个是1,那么或操作符|便会生成一个1,只要在两个输入位都为0的情况下才会输出0,如果输入位的某一个是1,但不全是1,那么异或操作符^生成一个1。按位非~,也成之于取反操作符,它属于一元操作符,只对一个操作数进行操作,若0生成1,若1生成0.

位与

op1

op2

Result

0

0

0

0

1

0

1

0

0

1

1

1

位或

op1

op2

Result

0

0

0

0

1

1

1

0

1

1

1

1

位异或

op1

op2

Result

0

0

0

0

1

1

1

0

1

1

1

0

按位操作符都可以和等号连用(&=),除了~非,因为~非是一元操作符因此不能与=联用。

移位操作符

移位操作符运算的也是二进制的bit。移位操作符只可用来处理整数类型。左移位操作符<<能按照操作符,能够按照操作符右侧的数字将操作符左边的操作数向左移动(低位补零)

向右操作符>>是将操作数向右移位与左移操作符用法相同。右移操作符会对操作数的符号进行符号扩展,若符号为正,则在高位插入0,若符号为负,则在高位插入1.Java中新增一种无符号右移操作符>>>,它使用“零扩展”:无论正负,都在高位补0。

public class URShift{

public static void main(String [] args){

int i=-1;

System.out.println(Integer.toBinaryString(i));

i>>>=10;

System,out.println(Integer.toBinaryString(i));

long l=-1;

System.out.println(Integer.toBinaryString(l));

l>>>=10;

System.out.println(Integer.toBinaryString(l));

short s=-1;

System.out.println(Integer.toBinaryString(s));

s>>>=10;

System.out.println(Integer.toBinaryString(s));

byte b=-1;

System.out.println(Integer.toBinaryString(b));

b>>>=10;

System.out.println(Integer.toBinaryString(b));

b=-1;

System.out.println(Integer.toBinaryString(b));

System.out.println(Integer.toBinaryString(b>>>10));

}

}

输出

11111111111111111111111111111111

1111111111111111111111

1111111111111111111111111111111111111111111111111111111111111111

111111111111111111111111111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

11111111111111111111111111111111

1111111111111111111111

移动操作符

Operator

Use

Operation

>>

op1 >> op2

将op1的位向右移动,距离由op2决定;左边的位填上最高位(符号位)

<<

op1 << op2

将op1的位向左移动,距离由op2决定;右边的位填上0

>>>

op1 >>> op2

将op1的位向右移动,距离由op2决定;左边的位填上0

【上篇】
【下篇】

给我留言

留言无头像?