首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java 运算符左移<<与右移>>是否可逆解决方法

2012-03-15 
java 运算符左移与右移是否可逆比如111右移两位是27,然后用27左移两位是108,明白左移是乘以2的n次方,

java 运算符左移<<与右移>>是否可逆
比如111右移两位是27,然后用27左移两位是108,明白左移是乘以2的n次方,右移是除以2的n次方,请问我如何让27左移两位本来是多少就是多少呢,如111(110,109)右移两位,在左移回来的时候还是111而不是108

public class data17 {
public static void main(String[] args) {
int a=110;
int c=-4;
int b=2;
int d=2;
System.out.println("a 的移位结果:"+(a>>b));
System.out.println("c 的移位结果:"+(c<<d));
}
}

[解决办法]
当然不可逆。

除非你将你的数换算成2进制后,右边可移位的0位数够。

比如:4(十进制)=100(2进制),右移两位再左移两位还是原来的值

Java code
System.out.println((4>>2));System.out.println((4>>2<<2));
[解决办法]
不可逆的~~!左移是低位补0,右移高位根据数据的符号进行补:负号补1,正数补0!
[解决办法]
Java code
public class test {    public static void main(String[] args) {        p(4>>2);        p(5>>2);    }    private static void p( Object o ) {        System.out.println(o);    }}
[解决办法]
LZ想循环左右移。。java中,不直接支持

热点排行
Bad Request.