java 移位运算符

Java中的移位运算符主要有三种:左移运算符(<<)、右移运算符(>>)、无符号右移运算符(>>>)。这些运算符可用于将整型数据(int、long、byte、short)的二进制位进行移动,从而对数据进行位操作。

1. 左移运算符(<<)

左移运算符(<<)的作用是把一个数的二进制码向左移动指定的位数,空出来的位用0来填充。具体的操作公式为:

```

a << b

```

其中,a表示要进行移位操作的整数,b表示要移动的位数。左移运算符与位数相乘,因此移动n位就相当于乘以2的n次方。例如,a << 3就相当于将a乘以8(2的3次方)。

下面是一个示例代码:

```java

int a = 5; // 5的二进制表示为101

int b = a << 3; // 将5左移3位,即变成101000,相当于乘以2的3次方

System.out.println(b); // 输出40

```

2. 右移运算符(>>)

右移运算符(>>)的作用是把一个数的二进制码向右移动指定的位数,空出来的位用符号位来填充。也就是说,如果该数为正数,则在左侧空出的位上加0;如果为负数,则加1。具体的操作公式为:

```

a >> b

```

其中,a表示要进行移位操作的整数,b表示要移动的位数。右移运算符与位数相除,因此移动n位就相当于除以2的n次方。例如,a >> 3就相当于将a除以8(2的3次方)。

下面是一个示例代码:

```java

int a = 16; // 16的二进制表示为10000

int b = a >> 3; // 将16右移3位,即变成10,相当于除以2的3次方

System.out.println(b); // 输出2

```

注意,如果对于负数,右移运算符在操作过程中会将其转化为其对应的正数的补码,然后进行移位操作。因此,若负数的符号位是1,则移位时会在左侧填充1,若符号位是0,则填充0。

3. 无符号右移运算符(>>>)

无符号右移运算符(>>>)的作用是把一个数的二进制码向右移动指定的位数,并在左侧空出的位上填充0。无符号右移运算符主要用于对二进制数进行截断操作。具体的操作公式为:

```

a >>> b

```

其中,a表示要进行移位操作的整数,b表示要移动的位数。无符号右移运算符与位数相除,因此移动n位就相当于除以2的n次方。与右移运算符不同的是,无符号右移运算符左侧空出的位置都填充0,无论该数是正数还是负数。

下面是一个示例代码:

```java

int a = -7; // -7的二进制表示为11111111111111111111111111111001(32位补码)

int b = a >>> 3; // 将-7无符号右移3位,即变成00011111111111111111111111111111,相当于除以2的3次方

System.out.println(b); // 输出536870911

```

需要注意的是,由于在无符号右移运算符中左侧填充的是0,因此当对一个负数进行无符号右移运算时,其结果会变成一个非常大的正整数。

综上所述,移位运算符可用于对整数进行位操作,可以实现快速地进行乘、除以2的n次方操作等。在实际开发中,使用移位运算符可以有效地提高程序的效率。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(12) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部