关于java的位运算符:<<与>>>
2016-11-04 16:25
169 查看
今天,突然想起java位运算符>>>的描述:用0填充最高位;>>:用符号位填充最高位。
于是乎有了这样的问题int a = -1;
int c = a>>>1;这时候c的值是多少呢?
当然不可能是0啦,答案是:
原因是在计算机系统中,数值一律用补码表示和储存,这时候-1
= 1111 1111;
则 a = 11111111 11111111 11111111 11111111;
右移一位,最高位以0补齐,则 a = 01111111 11111111 11111111 11111111;
此时 a =2147483647。
此时再将 a 的值左移一位,则 a = 11111111 11111111 11111111 11111110;
刚好是-2的补码;
于是乎有了这样的问题int a = -1;
int c = a>>>1;这时候c的值是多少呢?
当然不可能是0啦,答案是:
2147483647
原因是在计算机系统中,数值一律用补码表示和储存,这时候-1
= 1111 1111;
则 a = 11111111 11111111 11111111 11111111;
右移一位,最高位以0补齐,则 a = 01111111 11111111 11111111 11111111;
此时 a =2147483647。
此时再将 a 的值左移一位,则 a = 11111111 11111111 11111111 11111110;
刚好是-2的补码;
相关文章推荐
- <<Think in Java 4 >>中关于使用XOM操作xml文件
- 关于java线程池<二>
- JAVA/Android位运算符——左移(<<)、右移(>>)、与(&)、非(~)、或(|)、异或(^) .
- 【java】位运算符(<<,>>,>>>)
- java工具箱---最新更新(关于<a:support />放在某个标签中不可用)
- 纠错 : 关于书籍<java核心技术 卷I 基础知识 第八版> 第五章 Employee/Manager 两个例子
- 关于JAVA 位运算“<<” ">>"
- 关于java的移位运算符<<,>>,>>>
- java中关于<<,>>,>>>
- java的位运算符(>>,<<,>>>,&,|)
- 关于java的位运算(<<、>>、<<<、&、|、^、~)
- 关于在freemarker模板中遍历数据模型List<JavaBean>的经验
- 关于java中<T>问题
- 关于java中<T>的用法
- 关于java线程池<一>
- 关于java线程池<三>
- 关于GSON中 java.lang.reflect.Type type = new TypeToken<List<Object>>(){}.getType();
- 关于JAVA中JNI的应用 <转>
- java redis demo关于List<Integer>,List<String>
- Java关于List<String> 进行排序,重写Comparator()方法