举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java位运算符详解 Java 按位运算符

java位运算符详解 Java 按位运算符

2023-03-06 17:20 Java教程

java位运算符详解 Java 按位运算符

java位运算符详解

Java位运算符是指在Java中使用的位运算符,它们可以对整数和字节值执行位操作。它们可以用来检查一个数字的特定位是否被设置,或者将一个数字的特定位设置为1或0。

Java中有6个位运算符:&、|、^、~、<<和>>。

&(按位与)运算符用于将两个数字的二进制表示形式中的每一位都“与”起来。如果两个相应的二进制位都是1,那么最后得到的二进制位也是1;如果其中有一个二进制位是0,那么最后得到的二进制位就是0。例如:

int a = 60; // 60 = 0011 1100 
int b = 13; // 13 = 0000 1101 
int c = 0; 
c = a & b; // 12 = 0000 1100 

| (按位或) 运算符用于将两个数字的二进制表示形式中的每一位都“或”起来。如果其中有一个相应的二进制位是1,那么最后得到的二进制位就是1;如果其中有一个相应的二进制位是0,那么最后得到的二进制位就是0。例如:

int a = 60; // 60 = 0011 1100 
int b = 13; // 13 = 0000 1101 
int c = 0; 
c=a | b; // 61= 0011 1101 

^ (异或) 运算符用于将两个数字的二进制表示形式中的每一位都“异或”起来。如果其中有一个相应的二进制位不同(即一方是1而另一方是0或者另一方是1而另一方是0) ) ,那么最后得到的二进制位就是1. 否者就会得出0.例如:

int a=60;//60=0011 1100   int b=13;//13=0000 1101   int c=0;   c=a^b;//49=0011 0001 

~ (取反/补/变号/逆/非/NOT) 运算 符用来对单独一 个 整 数 做 取 反 操作 . 具 体 来 说 , 其把该 整 数 的 每 一 bit 都 翻 转 , 具 有 0 的 bit 变 成 1 , 有 1 的 bit 变 成 0 .例如:

 int a=60 ;//60=0011 1100   int b=~a ;//-61=-0011 1101 

<< (左 移 ) 运 算 符 , 顾 向已, 把该 整 数 的 bit 都 向已 移动 n(n≧ 0) bit .例如 : < pre > int a=60 ;//60=0011 1100 int b=a<<2 ;//240=1111 0000 < p > >> (右 移 ) 运 算 符 , 顾 向右, 把该 整 数 的 bit 都 向右 移动 n(n≧ 0) bit .例如 : < pre > int a=-4 ;//-4=-0000 0100 int b=a>>2 ;//-1=-1111 1111

Java 按位运算符

Java教程 - Java按位运算符


按位操作符作用于其操作数的各个位。Java按位运算符可以应用于整数types: long,int,short,char,byte

按位运算符列表

下表列出了所有Java按位运算符。

运算符 结果
~ 按位一元NOT
& 按位AND
| 按位或
^ 按位异或
>> 向右移动
>>> 右移零填充
<< 向左移动
&= 按位AND分配
|= 按位OR分配
^= 按位异OR分配
>>= 右移赋值
>>>=右移零填充分配
<<= 向左移位

按位运算符分配将赋值与按位运算组合。以下两个语句是等效的:

a = a >> 4; 
a >>= 4;  

以下两个语句是等效的:

a = a | b; 
a |= b;

以下程序演示了按位运算符分配:

 
public class Main {
  public static void main(String args[]) {
    int a = 1;
    int b = 2;
    int c = 3;
    a |= 2;
    b >>= 2;
    c <<= 2;
    a ^= c;
    System.out.println("a = " + a);
    System.out.println("b = " + b);
    System.out.println("c = " + c);

  }
}

此程序的输出如下所示:


Java左移运算符

左移位算子,<<移位所有位中的一个值到左边一个指定的数字的时间。

它有这种一般形式:

value << num

以下代码移位字节类型变量。

 
public class Main {
  public static void main(String args[]) {
    byte a = 64, b;
    int i;
    i = a << 2;
    b = (byte) (a << 2);
    System.out.println("Original value of a: " + a);
    System.out.println("i and b: " + i + " " + b);
  }
}

此程序生成的输出如下所示:


例子

每个左移具有使原始值加倍的效果。以下程序说明了这一点:

 
public class Main {
  public static void main(String args[]) {
    int num = 0xFFFFFFF;

    for (int i = 0; i < 4; i++) {
      num = num << 1;
      System.out.println(num);

    }
  }
}

程序生成以下输出:

Java右移运算符

右移位运算符>> 将值中的所有位向右移a指定次数。

其一般形式如下所示:

value >> num

num 指定要向右移位的位置数。

以下代码段将值 32 向右移两个位置:

 public class Main {
  public static void main(String[] argv) {

    int a = 32;
    a = a >> 2;
    System.out.println("a is " + a);

  }
}

输出:

Java无符号右移

Java无符号,右移运算符,>>> ,始终将零转移到高阶位。

其一般形式如下所示:

value >>> num

num 指定要向右移位的位置数。

以下代码显示如何使用无符号右移。

public class Main {
  public static void main(String[] argv) {
    int a = -1;
    a = a >>> 24;

    System.out.println("a is " + a);
  }
}

输出:

阅读全文
以上是名动网为你收集整理的java位运算符详解 Java 按位运算符全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们