移位(左移,右移和无符号右移)
来源:互联网 发布:怎么查IP端口开关 编辑:程序博客网 时间:2024/05/25 21:33
package sort;public class Shift {public static void main(String[] args) {int x = -50;int a = 50;int b = 5;int m = 1;int c = a >> b;int d = a << b;int e = a >>> b;int q = x >> b;int p = x << b;int y = -10 >>> b;for (int i = 0; i < b; i++) {m *= 2;}int cc = a / m;int dd = a * m;int ee = a / m;int qq = x / m - 1;int pp = x * m;int yy = x / m - 1;System.out.println("c =" + c);System.out.println("cc =" + cc);System.out.println("e =" + e);System.out.println("ee =" + ee);System.out.println("d =" + d);System.out.println("dd =" + dd);System.out.println("q =" + q);System.out.println("qq =" + qq);System.out.println("p =" + p);System.out.println("pp = " + pp);System.out.println("y =" + y);System.out.println("yy =" + yy);}}
结果:
c =1
cc =1
e =1
ee =1
d =1600
dd =1600
q =-2
qq =-2
p =-1600
pp = -1600
y =134217727
yy =-2
结论:
a为正数:
c为a右移b位的结果,cc为a除以2的b次方的结果因为c == cc,所以a右移两位相当于a除以2的b次方;
e为a无符号右移b位的结果,ee为a除以2的b次方的结果因为 e == ee,所以a无符号右移两位相当于a除以2的b次方;
d为a左移b位的结果,dd为a乘以2的b次方的结果因为d == dd,所以a左移两位相当于a乘以2的b次方。
x为负数:
q为x右移b位的结果,qq为x除以2的b次方减去1的结果因为q == qq,所以x右移两位相当于x除以2的b次方减去1;
p为x左移b位的结果,pp为x乘以2的b次方的结果因为p == pp,所以x左移两位相当于x乘以2的b次方;
y为x无符号右移的结果,从y的数值可以看出y于x无任何算术关系,所以负数无符号右移只有逻辑意义,无任何算术意义。
总结:
a << b左移位符,表示把a左移b位,在移位的时候计算机会先把a转换成二进制数进行移位,移位后在转成十进制数,
移位过程中如果a是正数就把a左移b位,并且在低位补0,如果a为负数把a左移b位,在低位补0;
所以左移就是把a(不论正负)左移b位,并且在低位补0;
a >> b右移位符,表示把a右移b位,在移位的时候计算机会先把a转换成二进制数进行移位,移位后在转成十进制数,
移位过程中如果a是正数就把a右移b位,并且在高位补0,如果a为负数把a右移b位,在高位补1;
也就是说如果为正高位补0,如果为负高位补1;
a >>> b无符号右移,把a右移b位,不论正负都要在高位补0。
a << b相当于a(不论正负)乘以2的b次方,a >> b相当于a(正数)除以2的b次方或者a(负数)除以2的b次方-1;
a>>>b相当于a(正数)除以2的b次方,如果a为负数则没有算术意义。
- 移位(左移,右移和无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
- java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)
- java的算术右移(>>)、算术左移(<<)及逻辑右移(>>>,无符号移位)
- 有符号右移,无符号右移,左移
- java移位运算符实验程序:<<(左移)、>>(带符 号右移)和>>>(无符号右移)
- <<(左移) 、>>(右移) 和 >>>(无符号右移)
- java左移、右移、无符号右移
- java左移、右移、无符号右移、补码
- 无符号右移,左移,右移操作
- java左移、右移、无符号右移
- 运算符 左移<<, 右移>>, 无符号右移>>>
- Nginx常用日志分割方法
- 使用response输出随机图片
- (六)mybatis学习之输入映射与输出映射
- servlet---用户登录验证欢迎
- Android 如何自定义控件(继承View)
- 移位(左移,右移和无符号右移)
- jvm(13)-线程安全与锁优化
- LayoutInflater解析
- tomcat 启动参数 Xms, Xmx, XX:MaxNewSize, XX:PermSize, -XX:MaxPermSize, Djava.awt.headless
- 逆波兰表达式的计算问题
- linux图形界面和文本界面的切换操作方法
- 上传项目到JCenter以及Maven仓库的步骤和错误解决
- springmvc(一),简单搭建能使用即可
- ORACLE directory 目录