位移运算符[duo9]
来源:互联网 发布:网易 mysql 编辑:程序博客网 时间:2024/04/29 09:38
Java中的位移运算符,是比较令初学者迷惑的地方,尤其是数学基础不好的。至少当初我是如此。
位移运算符(Shift operators)用来操作位,仅仅可以用在基本的整数类型上。
它们分为:
左移运算符号(<<);
右移运算符号(>>);
Java中还有一种特殊的,无正负号的右移运算符(>>>)
(1)左移动运算符:
会将操作的数向左边移动,移动的位的个数由右操作数指定,左移后,低位会被自动补零(0)。
(2)右移动运算符:
反过来,把操作数向右移动,移动的位个数同样由右操作数指定。注意:面对带正负号的数,会采用符号扩展,如果原值是正数,则高位补上0;如果原值是负数,高位补1。
(3)无正负号的右移运算符(>>>):
采用0补充,意思就是说,无论是正号还是负号,都在高位补0。
如果你操作数是比如char,byte,short,位移运算之前,会转型为int,正如前面所说,位移运算符仅仅可以用在类型为int的数值上。
例:
public class URShift{
public static void main(String[] args){
int i=-1;
i>>>=10;
System.out.println(i);
}
}
java: 4194303
怎样工作:
用二进制表示时最高位用0或1表示正负
0表示正 1表示负(不是仅最高为1 而是所有的高位都是1)
>> 是带符号右移 右移时左边补符号位
>>> 是不带符号右移 右移时左边补零
所以两者在处理 正数时是一样的 左边都补零
但在处理负数时就有区别了 >>补1 >>>补0
所以 -1
1111 1111 1111 1111 1111 1111 1111 1111B
i >>>= 10 后
0000 0000 0011 1111 1111 1111 1111 1111B
= 4194303
- 位移运算符[duo9]
- 位移运算符
- 位移动运算符:
- 位移运算符
- 位移运算符
- 位移位运算符
- java 位移运算符
- C#位移运算符
- Java位移运算符
- C#位移运算符
- java位移运算符
- 位移运算符
- Java位移运算符
- Java位移运算符
- Java位移运算符
- Java 位移运算符
- Java位移运算符
- c++位移运算符
- 知识的四个主要特征
- 睡觉前的最后一段
- 关于站长耗子
- 出发去北京,明天二面IBM CRL
- 怎么了?
- 位移运算符[duo9]
- 成长中必须知道的20个故事(摘自:魅族明的上古卷轴)
- 《中国大学生进入机关工作必修手册》
- 一生里和你爱的人做完这50件事(摘自:魅族明的上古卷轴)
- 4个小时,大刀阔斧的改造了一下自己的BLOG!
- asp.net2.0 最新的一些更正
- DHCP+WINS+helper address
- JDBC体系结构概述
- Tomcat配置技巧Top 10