java中有三种移位运算符

来源:互联网 发布:淘宝上有个正义哥代购 编辑:程序博客网 时间:2024/06/05 18:11

java中有三种移位运算符

<<      :     左移运算符,num << 1,相当于num乘以2

>>      :     右移运算符,num >> 1,相当于num除以2

>>>    :     无符号右移,忽略符号位,空位都以0补齐

下面来看看这些移位运算都是怎样使用的

复制代码
 1 /** 2  *  3  */ 4 package com.b510.test; 5  6 /** 7  * @author Jone Hongten 8  * @create date:2013-11-2 9  * @version 1.010  */11 public class Test {12 13     public static void main(String[] args) {14         int number = 10;15         //原始数二进制16         printInfo(number);17         number = number << 1;18         //左移一位19         printInfo(number);20         number = number >> 1;21         //右移一位22         printInfo(number);23     }24     25     /**26      * 输出一个int的二进制数27      * @param num28      */29     private static void printInfo(int num){30         System.out.println(Integer.toBinaryString(num));31     }32 }
复制代码

运行结果为:

1010101001010

我们把上面的结果对齐一下:

43210      位数
-------- 1010 十进制:10 原始数 number10100 十进制:20 左移一位 number = number << 1; 1010 十进制:10 右移一位 number = number >> 1;

看了上面的demo,现在是不是对左移和右移了解了很多了呢

对于:>>>

 无符号右移,忽略符号位,空位都以0补齐

value >>> num     --   num 指定要移位值value 移动的位数。

无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位  无符号右移运算符>>> 只是对32位和64位的值有意义

分类: java ,Java Web
标签: java, &lt, &gt
好文要顶 关注我 收藏该文  
Hongten
关注 - 21
粉丝 - 1891
+加关注
15
5
« 上一篇:java中&和&&的区别和联系
» 下一篇:Django 1.6.0 正式发布,大幅改进事务处理
posted @ 2013-11-02 14:11 Hongten 阅读(230255) 评论(9) 编辑 收藏
  
#1楼 2014-07-04 11:00 FX夜归人  
>>-1?>>>-1?<<-1?
支持(0)反对(0)
  
#2楼 2016-09-02 13:39 按时  
睁眼说瞎话
支持(2)反对(2)
  
#3楼 2017-02-08 11:49 郑州的文武  
<< : 左移运算符,num << 1,相当于num乘以2

>> : 右移运算符,num >> 1,相当于num除以2

这样表述不太好,结果是乘或除2,但是其过程是num二进制表示的加0或减位;
虽然下面有代码说明,但开头这样表述容易误导。
支持(1)反对(0)
  
#4楼 2017-02-22 08:53 clarklxr  
用奇数来演示会比较明显,是相当于乘以或除以2,不是等于
7<<1=14
7>>1=3
支持(0)反对(0)
  
#5楼 2017-07-03 13:34 season_16  
-3 >>> 1 
这个对于无符号右移更明显一点
支持(0)反对(0)
  
#6楼 2017-08-06 20:51 鴻飛  
@ 按时
素质太差了
支持(0)反对(0)
  
#7楼 2017-08-07 01:59 自由布鲁斯  
学习一下
支持(0)反对(0)
  
#8楼 2017-09-14 12:51 嗯,sheep  
还是不太明白>>>无符号右移。

还有一点,三楼的郑州的文武说得对。不能单纯的说成是乘以2或者除以2。尤其是除以2是不正确的。
支持(4)反对(0)
  
#9楼 2017-11-24 14:18 郑文强  
>> 符号右移时,对于正数 高位补0,对于负数 高位补1;
>>> 无符号右移,长度扩展为4字节,最高位都为0,但正数扩展位补0,负数扩展位补1