前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java位运算符

java位运算符

原创
作者头像
堕落飞鸟
发布2023-04-03 11:49:45
6220
发布2023-04-03 11:49:45
举报
文章被收录于专栏:飞鸟的专栏

介绍

Java中的位运算符是用于对二进制数进行操作的运算符。在计算机内部,所有的数据都是以二进制形式存储和处理的,因此使用位运算符可以高效地进行位操作,包括位移、位与、位或、位非、位异或等操作。本文将介绍Java中的位运算符,包括其语法、操作和示例。

语法

Java中的位运算符包括以下6种:

  1. 位与(&)
  2. 位或(|)
  3. 位异或(^)
  4. 左移(<<)
  5. 右移(>>)
  6. 无符号右移(>>>)

它们的语法如下:

运算符

描述

&

位与运算符。如果相应的二进制位都是1,则该位的结果值为1,否则为0。

|

位或运算符。如果相应的二进制位都是0,则该位的结果值为0,否则为1。

^

位异或运算符。如果相应的二进制位值相同,则结果为0,否则为1。

<<

左移运算符。将左操作数的所有位向左移动指定的位数。在右边空出的位置填充0。

>>

右移运算符。将左操作数的所有位向右移动指定的位数。在左边空出的位置填充0。

>>>

无符号右移运算符。将左操作数的所有位向右移动指定的位数。在左边空出的位置填充0。

操作

以下是Java中的位运算符的操作。

位与(&)

位与运算符将两个操作数的每一个二进制位进行比较,如果两个操作数的相应位都是1,则该位的结果值为1,否则为0。例如:

代码语言:javascript
复制
int num1 = 5;   // 二进制表示为:101
int num2 = 3;   // 二进制表示为:011
int result = num1 & num2;   // 二进制表示为:001,即1
System.out.println(result);   // 输出结果为1

在上述示例中,位与运算符比较了num1和num2的每个二进制位,并将结果存储在result变量中。

位或(|)

位或运算符将两个操作数的每一个二进制位进行比较,如果两个操作数的相应位都是0,则该位的结果值为0,否则为1。例如:

代码语言:javascript
复制
int num1 = 5;   // 二进制表示为:101
int num2 = 3;   // 二进制表示为:011
int result = num1 | num2;   // 二进制表示为:111,即7
System.out.println(result);   // 输出结果为7

在上述示例中,位或运算符比较了num1和num2的每个二进制位,并将结果存储在result变量中。

位异或(^)

位异或运算符将两个操作数的每一个二进制位进行比较,如果两个操作数的相应位值相同,则该位的结果值为0,否则为1。例如:

代码语言:javascript
复制
int num1 = 5;   // 二进制表示为:101
int num2 = 3;   // 二进制表示为:011
int result = num1 ^ num2;   // 二进制表示为:110,即6
System.out.println(result);   // 输出结果为6

在上述示例中,位异或运算符比较了num1和num2的每个二进制位,并将结果存储在result变量中。

左移(<<)

左移运算符将左操作数的所有位向左移动指定的位数。在右边空出的位置填充0。例如:

代码语言:javascript
复制
int num1 = 5;   // 二进制表示为:101
int result = num1 << 2;   // 二进制表示为:10100,即20
System.out.println(result);   // 输出结果为20

在上述示例中,左移运算符将num1的所有位向左移动2位,并在右边空出的位置填充0,最终结果存储在result变量中。

右移(>>)

右移运算符将左操作数的所有位向右移动指定的位数。在左边空出的位置填充0。例如:

代码语言:javascript
复制
int num1 = 5;   // 二进制表示为:101
int result = num1 >> 2;   // 二进制表示为:1,即1
System.out.println(result);   // 输出结果为1

在上述示例中,右移运算符将num1的所有位向右移动2位,并在左边空出的位置填充0,最终结果存储在result变量中。

无符号右移(>>>)

无符号右移运算符将左操作数的所有位向右移动指定的位数。在左边空出的位置填充0。无论左操作数的符号是正还是负,都会在左边填充0。例如:

代码语言:javascript
复制
int num1 = -5;   // 二进制表示为:11111111111111111111111111111011
int result = num1 >>> 2;   // 二进制表示为:00111111111111111111111111111101,即1073741821
System.out.println(result);   // 输出结果为1073741821

在上述示例中,无符号右移运算符将num1的所有位向右移动2位,并在左边空出的位置填充0,最终结果存储在result变量中。

注意事项

在使用位运算符时,需要注意以下几点:

  • Java中的位运算符只能用于整型
  • 位运算符的优先级较低,应该注意使用括号来确保正确的运算顺序。
  • 左移和右移运算符的移动位数必须是非负整数。如果指定了负数,则会产生编译错误。
  • 对于右移和无符号右移运算符,如果左操作数是正数,则在左边填充0;如果左操作数是负数,则在左边填充1。
  • 在使用位运算符时,需要注意位运算的运算规则,特别是对于位与运算符和位或运算符,需要注意运算的结果是否符合预期。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 语法
  • 操作
    • 位与(&)
      • 位或(|)
        • 位异或(^)
          • 左移(<<)
            • 右移(>>)
              • 无符号右移(>>>)
              • 注意事项
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档