码迷,mamicode.com
首页 > 其他好文 > 详细

移位运算符解析

时间:2017-11-27 00:11:24      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:mod   width   scroll   sof   微软   重点   data-   微软雅黑   mirror   

移位运算符分为左移(<<)、右移(>>)、无符号位移(>>>)。
<<:空位补0,最高位丢弃。相当于数据乘以2的n次幂。
正数的左移:
int a=3<<2;
System.out.println(a);

 

3的原码:11
原码      00000000 00000000 00000000 00000011
反码      00000000 00000000 00000000 00000011
补码      00000000 00000000 00000000 00000011
左移(00)000000 00000000 00000000 0000001100(补码)
正数的原反补都相同,所以结果为12。
负数的左移:
int a=-3<<2;
System.out.println(a);
 
 
-3的原码
原码           10000000 00000000 00000000 00000011
反码           11111111   11111111   11111111   11111100
补码           11111111   11111111   11111111   11111101
左移     (11)11111111   11111111   11111111   11110100(补码)
反码           11111111   11111111   11111111   11110011
原码           10000000  00000000 00000000 00001100(-12)
 
>>:最高位是0,左边补齐0;最高位是1,左边补齐1。相当于数据除以2的n次幂。
原理与左移相同。
 
>>>:无论最高位是0还是1,左边补齐0。
正数>>>的结果与>>相同,重点看负数。
int a=-12>>>2;
System.out.println(a);

 

-12的原码
原码         10000000 00000000 00000000 00001100
反码         11111111   11111111   11111111   11110011
补码         11111111   11111111   11111111   11110100
>>>          0011111111   11111111   11111111   111101(00)(补码)
变成了正数,原反补都相同,通过计算得?1073741821?。
 

 

移位运算符解析

标签:mod   width   scroll   sof   微软   重点   data-   微软雅黑   mirror   

原文地址:http://www.cnblogs.com/qiu1125584190/p/7900887.html

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