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

移位操作符

时间:2014-10-14 14:25:08      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   ar   strong   sp   数据   

移位操作符操作运算对象是 位(bit)

它处理的数据类型只能是 整数类型(int)

先大概看一下图,了解它是怎么移动的,下面会解释规则

bubuko.com,布布扣

移位的时候关注两点,  1.移动的方向 2.空缺位置的填补形式.

"有符号"左移位操作符(<<)  将二进制数据左移(在低位补0).

int i = 12448;
System.out.println(Integer.toBinaryString(i<<5)); 
/* 将i的二进制表示 11000010100000
* 向左移动5位,在低位补0,结果是1100001010000000000
*/

int i = -12448;
System.out.println(Integer.toBinaryString(i<<5)); 
/* 将i的二进制表示 11111111111111111100111101100000
*向左移动5位,在低位补0,结果是11111111111110011110110000000000
*/
 

"有符号"右移位操作符(>>)  将二进制数据右移.(若符号原来,就在高位插入0,为就在高位插入1

 

int i = 12448;
System.out.println(Integer.toBinaryString(i>>5));
/*二进制表示:
11000010100000
*右移5位: 110000101 对比看出,当为正数时高位的0不显示
*/
i = -12448; System.out.println(Integer.toBinaryString(i>>5));
/*二进制表示:11111111111111111100111101100000
*右移5位: 11111111111111111111111001111011
*/

 

相对有符号右移

"无符号"右移操作符(>>>) 就是说,无论数据是正负都在高位插入0.

 

i = 12448;
    System.out.println(Integer.toBinaryString(i>>>5));
/*二进制表示: 11000010100000
 *无符号右移5位 110000101
*/

i = -12448;
    System.out.println(Integer.toBinaryString(i>>>5));
/*二进制表示: 11111111111111111100111101100000
 *无符号右移5位 111111111111111111001111011
*/
 

 

"移位" 与 "等号" 组合使用 表示方法"<<=或>>=或>>>="

这样会执行两步操作,先移位,然后赋值.

移位操作符

标签:style   blog   http   color   使用   ar   strong   sp   数据   

原文地址:http://www.cnblogs.com/vawa/p/4021798.html

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