了解Java中的移位运算符:左移、右移、无符号右移

作者:玉林麻将开发公司 阅读:107 次 发布时间:2023-07-09 13:00:49

摘要:Java是一门十分强大的语言,支持多种运算符,包括移位运算符。移位运算符是一种位运算符,用来对二进制数进行操作。在Java中,移位运算符包括左移、右移和无符号右移。本文将详细介绍Java中的移位运算符,包括它们的原理、用法以及实例。一、左移运算符(左移运算符用“在Java中,左移运算...

Java是一门十分强大的语言,支持多种运算符,包括移位运算符。移位运算符是一种位运算符,用来对二进制数进行操作。在Java中,移位运算符包括左移、右移和无符号右移。本文将详细介绍Java中的移位运算符,包括它们的原理、用法以及实例。

了解Java中的移位运算符:左移、右移、无符号右移

一、左移运算符(<<)

左移运算符用“<<”表示,它将二进制数向左移动一定的位数,右侧补0。左移运算符会将原数的二进制表示的每一位都向左移动一位,并在低位处补0。例如,对于二进制数1101进行左移1位,得到的结果为1110,二进制数1001左移2位,则变为100100。

在Java中,左移运算符有两种使用方式:左边是一个整数,右边是要左移的位数;左边是一个变量,右边是要左移的位数。例如:

int num1 = 10; //二进制数1010

int num2 = num1 << 1; //二进制数10100,十进制数20

int num3 = num1 << 2; //二进制数101000,十进制数40

在上述代码中,num1的二进制数为1010,左移1位后变为10100,十进制数为20;再左移2位后变为101000,十进制数为40。

二、右移运算符(>>)

右移运算符用“>>”表示,它将二进制数向右移动一定的位数,左侧用原来数的最高位填充。右移运算符会将原数的二进制表示的每一位都向右移动一位,并在最高位处补上原来的最高位。例如,对于二进制数1101进行右移1位,则变为1110,对于二进制数1001右移2位,则变为0010。

Java中的右移运算符也有两种使用方式:左边是一个整数,右边是要右移的位数;左边是一个变量,右边是要右移的位数。例如:

int num1 = 10; //二进制数1010

int num2 = num1 >> 1; //二进制数101,十进制数5

int num3 = num1 >> 2; //二进制数10,十进制数2

在上述代码中,num1的二进制数为1010,右移1位后变为101,十进制数为5;再右移2位后变为10,十进制数为2。

需要注意的是,如果原来数的最高位为1,右移运算符在最高位填充时会填1,因此在右移运算符运算中需要特别小心。

三、无符号右移运算符(>>>)

无符号右移运算符用“>>>”表示,它将二进制数向右移动一定的位数,左侧用0填充。和右移运算符不同的是,无符号右移运算符会将原数的二进制表示的每一位都向右移动一位,并在最高位处补0。例如,对于二进制数1101进行无符号右移1位,则变为0110,对于二进制数1001右移2位,则变为0010。

Java中的无符号右移运算符也有两种使用方式:左边是一个整数,右边是要右移的位数;左边是一个变量,右边是要右移的位数。例如:

int num1 = -10; //二进制数11111111111111111111111111110110

int num2 = num1 >>> 1; //二进制数01111111111111111111111111111011,值为2147483635

在上述代码中,num1的二进制数为11111111111111111111111111110110,向右移1位后变为01111111111111111111111111111011,转化为十进制数为2147483635。

需要注意的是,在使用无符号右移运算符时,如果原来数的最高位为1,右移位时会填0,因此对于无符号右移运算符,对最高位是否为1并不作特别处理。

四、移位运算符的应用

移位运算符广泛应用于二进制数的处理、位运算等方面。它可以方便地进行二进制数的位数增加或减少,并且能够实现一些特殊的操作,例如用左移运算符乘以2的n次方,用右移运算符除以2的n次方等等。

下面举例说明一些移位运算符的应用:

1、用左移运算符实现乘法

例如,如果要计算5*8的值,可以使用左移运算符实现:5<<3。因为8=2的3次方,所以将5左移3位即可得到40,相当于5*8的结果。

2、用右移运算符实现除法

例如,如果要计算16/2的值,可以使用右移运算符实现:16>>1。因为2是2的1次方,所以将16右移1位即可得到8,相当于16/2的结果。

3、统计二进制数中1的个数

统计二进制数中1的个数是一道非常经典的题目,移位运算符能够快速地实现这个功能。代码如下:

public int countBits(int num) {

int count = 0;

while(num > 0){

if((num&1) == 1){

count++;

}

num = num >> 1;

}

return count;

}

在上述代码中,首先初始化count为0,然后每次将num与1进行与运算,如果结果为1,说明num的最低位为1,则count加1;然后将num右移1位,将次低位作为最低位,循环执行上述操作,直到num的值为0。

四、总结

本文详细介绍了Java中的移位运算符,包括左移、右移和无符号右移。移位运算符是一种位运算符,用来对二进制数进行操作,能够方便地进行二进制数的位数增加或减少,并且能够实现一些特殊的操作,例如乘除法、统计二进制数中1的个数等等。在编写代码时,需要注意移位运算的规则,并特别小心右移运算符在最高位填充时可能出现的问题。

  • 原标题:了解Java中的移位运算符:左移、右移、无符号右移

  • 本文链接:https:////zxzx/119648.html

  • 本文由深圳飞扬众网小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与飞扬众网联系删除。
  • 微信二维码

    CTAPP999

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:166-2096-5058


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部