java的位运算符详解实例——&、^、|、~、<<、>>、>>>

来源:互联网 发布:冢原卜传 知乎 编辑:程序博客网 时间:2024/05/30 21:58

1、&(位运算符AND)

运算时会把十进制的数先转化为二进制的数,两个操作数中位都为1,结果才为1,否则结果为0,看一个简单的例子。

public class Testdata1 {
public static void main(String[] args) {
int k=12;
int j=123;
System.out.println(k&j);
 }
}

运行结果为8;因为12的二进制数为1101,123的二进制数为1111011,根据与运算符的运算规律,只有两个位都是1,结果才是1,所以结果为8

2、^(异或运算符

异或运算符是用符号“^”表示的,其运算规律是:
两个操作数的位中,相同则结果为0,不同则结果为1。看一个简单的例子。

public class Testdata2 {
public static void main(String[] args) {
 int k=12;
 int j=123;
System.out.println(k^j);
  }
}

运行结果为119,因为12的二进制数为1101,123的二进制数为1111011,根据异或运算的规律,两个操作数的位中,相同则结果为0,不同则结果为1

可以得出其结果为1110111,转化为十进制就是119

3、|(或运算

其运算规律如下:
两个位只要有一个为1,那么结果就是1,否则就为0,看一个简单的例子。

public class Testdata3{
public static void main(String[] args) {
 int k=12;
 int j=123;
System.out.println(k|j);
  }
}

运行结果为127,因为12的二进制数为1101,123的二进制数为1111011,根据或运算的运算规律,两个位只要有一个为1,那么结果就是1,否则就为0,可以得出结果为1111111,转化为十进制数为127

4、~(非运算符)

其运算规律如下:

如果位为0,结果是1,如果位为1,结果是0,看一个简单例子。

public class Testdata4{
public static void main(String[] args) {
 int k=-12;

System.out.println(~k);
  }
}

运行结果为11,因为-12的二进制数为11111111111111111111111111110100,根据非运算的运算规律如果位为0,结果是1,如果位为1,结果是0,可以得出结果为1011,转化为十进制为11

5、<<( 左移运算符

其运算规律如下:

var<<n,相当于var乘以2的n次方,看一个简单的例子。

public class Testdata5 {
public static void main(String[] args) {
int k=2;
     System.out.println(k<<5);
 }
}

运行结果为32;

6、>>(右移运算符)

其运算规律如下:

var<<n,相当于var除以2的n次方,看一个简单的例子。

public class Testdata 6{
public static void main(String[] args) {
int k=32;
     System.out.println(k>>5);

 }
}

运行结果为1;

7、>>>(无符号右移

其运算规律如下:

忽略符号位,空位都以0补齐,看一个简单的例子。

public class Testdata7 {
public static void main(String[] args) {
int k=32;
     System.out.println(k>>>2);

 }
}

运行结果为8,因为32的二进制数为100000,右移两位就变为1000,转化为十进制数为8

0 0
原创粉丝点击