java移位运算

java移位运算移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。运算符含义例子<<左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)x<<3>>"有符号"右移运算符,将运算符左边的对象向右移动

大家好,欢迎来到IT知识分享网。java移位运算

     移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。

 运算符       含义       例子      
<< 左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0) x<<3
>> “有符号”右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。使用符号扩展机制,也就是说,如果值为正,则在高位补0,如果值为负,则在高位补1. x>>3
>>> “无符号”右移运算 符,将运算符左边的对象向右移动运算符右边指定的位数。采用0扩展机制,也就是说,无论值的正负,都在高位补0. x>>>3

  在java中,byte,short,long 在移位运算时,先将各自类型转换成int,转换成二进制计算后,在转换成对应的类型。

  如: 3<<3 = 0000 0011 * 2^3 = 0001 1000 = 24  ,即 向左移动三位,低位补0

     24 >> 3 = 0001 1000 / 2^3  = 0000 0011 = 3, 即 向右移动三位,高位补0  

    x<<y 相当于 x*2;x>>y相当于x/2y

      从计算速度上讲,移位运算要比算术运算快。
      如果x是负数,那么x>>>3没有什么算术意义,只有逻辑意义。

 

  在 java 中,int 类型的数据长度为 32 位,如果将 int 类型左移或者右移大于或等于 32 位时,并不会像预计的那样将数据全部填充为1或0。java 的处理方式是:当刚好为数据长度的整数倍时,即32、64······,数据保持原来不变;其他情况下移动除以 32 余数的长度。同理 long 类型数据以 64 为变化基准。 
在实际应用中,需要特别注意这点,当然也可以巧用此特性实现一些特殊算法的设计。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/33968.html

(0)
上一篇 2023-12-27 09:00
下一篇 2023-12-27 18:45

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信