码迷,mamicode.com
首页 > 编程语言 > 详细

Java位移运算

时间:2019-12-19 16:29:59      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:二进制   位移   数字   直接   结果   src   http   图片   方向   

位移运算符用来将操作数向某个方向(向左或者右)移动指定的二进制位数。在Java中,位移运算分为左位移和右位移,符号为<<和>>。

左位移运算符

左位移的符号是<<,其运算规则是:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

例如,将整数 11 向左位移 1 位的过程如图所示:

技术图片

从图中可以看到,原来数的所有二进制位都向左移动 1 位。原来位于左边的最高位 0 被移出舍弃,再向尾部追加 0 补位。最终到的结果是 22,相当于原来数的 2 倍。

对于正数的左位移,向左位移几次,就乘以2的几次方。比如5向左位移3次,表示为:5<<3,结果为5乘以2的三次方,等于30。

右位移运算符

右位移的符号是>>,其运算规则是:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补零。

例如,将整数 11 向右位移 1 位的过程如图所示:

技术图片

从图中可以看到,原来数的所有二进制位都向右移动 1 位。原来位于右边的最低位 1 被移出舍弃,再向最高位追加 0 补位。最终到的结果是 5,相当于原数整除 2 的结果。

对于正数的右位移,向右移动几次,就除以2的几次方。比如5向右位移一次,表示为5>>1,结果为5除以2,等于2。

总结

对于负数来说,Java中的位移应该谨慎使用,因为位移运算在Java中称为带符号的位移。位移时需计算其原码、反码、补码,得到结果后,还要对结果计算反码、原码,性能还不如直接使用乘除法。所以,如果是正数,当可以使用位移运算时可以尽量使用,能提升性能,而对于负数来说,还是尽量别用吧,结果与除法相差太远。

Java位移运算

标签:二进制   位移   数字   直接   结果   src   http   图片   方向   

原文地址:https://www.cnblogs.com/yybinger/p/12068157.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!