JAVA位移运算符了解`<< >> >>>`
来源:互联网 发布:mac mysql 入门教程 编辑:程序博客网 时间:2024/05/06 15:14
//如果你开始读了,那么一定要读到末尾才有收获public static void main(String[] args) { // 关于位移运算的测试 // 带符号位移: << >> int a = 1;// int类型4字节32位 00000000 00000000 00000000 00000001 int b = -1;// 同样是int 这个符号位怎么表示啊?答案是用补码表示 11111111 11111111 11111111 // 11111111 // 但是我们怎么判断这个数表示的是 -1 而不是//通过以下两个输出可以得到结果 System.out.println(Integer.MAX_VALUE); // 2147483647 // 01111111 11111111 11111111 11111111——也就是说第一位是符号位。 System.out.println(Integer.MIN_VALUE); // -2147483648 // -10000000 00000000 00000000 00000000 // 补 10000000 00000000 00000000 00000000 // 接下来我们对a和b进行位移运算 System.out.println(a); System.out.println(a >> 1); System.out.println(a << 1);//预测2 System.out.println(b); System.out.println(b >> 1); System.out.println(b << 1);//预测11111111 11111111 11111110—— -2 //输出 1 0 2 -1 -1 -2 //带符号右移高位空出的地方补符号位,可以理解为符号位也右移,空位补符号位 //如果向右移动符号位补全高位空缺,如果向左移动,地位空缺通通由0补全 //还有一点缺陷,我们所做的测试中用的例子的二进制数前31位都是相同的,无法判断符号位到底是否跟随移动了 //也就是说左移的测试是准确的,但是右移的测试是不一定准确的接下来我们用不同的数据进行测试 int c=1610612736;//01100000 00000000 00000000 00000000 System.out.println(c << 1);//如果符号位不动得到的就是1073741824//否则是负数 //输出是负数那就没有任何疑问了 //==================================================================================== // 无符号位移: 注意这里只有右移,没有左移>>> //预测是右移符号位不动 System.out.println(c >>> 1);//注意现在是无符号移动了——预测为 805306368 //ok了,这里是符号位不动,空位补0}
0 0
- JAVA位移运算符了解`<< >> >>>`
- java 位移运算符
- Java位移运算符
- java位移运算符
- Java位移运算符
- Java位移运算符
- Java位移运算符
- Java 位移运算符
- Java位移运算符
- java位移运算符
- JAVA位移运算符用法
- Java中的位移运算符
- Java中的位移运算符
- Java的位移运算符
- Java中的位移运算符
- java中的位移运算符
- Java的位移运算符
- java位移运算符<<和>>
- Volley框架的理解以及自定义各个对象
- 使用shiro进行权限管理
- `MeasureSpec`源码
- jquery-validation 使用
- 欢迎使用CSDN-markdown编辑器
- JAVA位移运算符了解`<< >> >>>`
- 各大热补丁方案分析和比较
- oracle 随机数dbms.random.value 用法
- 2016.6.11【初中部 NOIP提高组 】模拟赛C 总结
- ios多线程 -- GCD介绍
- study url
- PAT(乙级)1016. 部分A+B
- databox在edatagrid中设备默认值的问题
- OSI参考模型