六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 56|回复: 0

java移位运算符(转载)

[复制链接]

升级  76%

10

主题

10

主题

10

主题

童生

Rank: 1

积分
38
 楼主| 发表于 2013-1-27 05:21:57 | 显示全部楼层 |阅读模式
a)“>>”运算符
“>>”运算符作带符号的位移处理,它作位移处理时,会先将值向右移,并在高位填0,然后将位移后所空出的高位,全部改成原来的最高位的值(代表正负号的位)。也就是说负的值位移后,仍然是负的值,比如:
-10>>2 =-3
-10= 1111 1111 1111 1111 1111 1111 1111 0110
右移2位:0011 1111 1111 1111 1111 1111 1111 1101
结果:1111 1111 1111 1111 1111 1111 1111 1101 (全部天上原本符号位的值:1)
b)“>>>”运算符
“>>>”运算符所作的是无符号的位移处理,它不会将所处理的值的最高位视为正负符号,所以作位移处理时,会直接在空出的高位填入0。当我们要作位移的原始值并非代表数值时(例如:表示颜色图素的值,最高位并非正负号),可能就会需要使用此种无符号的位移。比如:
-10>>>2=1073741821
-10=1111 1111 1111 1111 1111 1111 1111 0110 (不管原来的“符号”位的值(一长串1),空上的全部直接填0)
0011 1111 1111 1111 1111 1111 1111 1101=1037341821
c)“<<”运算符
“>>”运算符的所作的也是无符号的位移处理,同样地,它不会将所处理的值的最高位视为正负符号,它作位移处理时,会直接左移并在低位填入0。所以第二高位以下的位若移到了最高位,该值的正负可能会与原来的不同。
-2147483647<<2=4
-2147483647=1000 0000 0000 0000 0000 0000 0000 0001
 
0000 0000 0000 0000 0000 0000 0000 0100=4
d)“<<<”运算符
恩,当然了,在java里不存在它。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表