移位操作符中,只有数值右端的低5位才有用。这话什么意思啊??移位操作符自然是你想怎么移就怎么移咯,什么叫低5位啊??
还有,若对一个long类型的数值进行处理,最后得到的结果也是long。这话我也模糊了,操纵long的类型,结果自然也应该是long咯,难道操作byte、char、short、最后的结果变成了int型??

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【llm0528】截止到2008-07-10 14:11:27的历史汇总数据(不包括此帖):
    发帖的总数量:47                       发帖的总分数:940                      每贴平均分数:20                       
    回帖的总数量:40                       得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:47                       结贴的总分数:940                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    value=0x1234(1 0010 0011 1000); bit_number=7;
    1 << bit_number;即:128(10000000);
    value|=128 即:(1 0010 0011 1000)|(1000 0000)=(1 0010 1011 1000) ^指定位为1;  
    其他"|"位或 "&" 位与 "~" 位反,
    表达式"a<<-5"编译器不同含义就不同.至于 long问题 ~~~ 我也没懂~~~
      

  3.   

    我的处理器一般是处理32位的长度,java中处理移位运算都是转换成int类型再进行移位的,如果是long,由于他是int的倍数,所以他不进行转换,就以64位进行移位。byte,short等类型如果进行移位运算在移位之前都会转换成为int类型。例如 byte a=1;这是个字节类型1,转换成整形的1,二进制位前面全部加0就可以了,然后再进行移位。  最后你要注意一点就是移位操作32是一个周期,意思就是说,任何数你移动32次结果和移动一次是一样的。
         System.out.println(2<<2);
         System.out.println(2<<34);
    得到的结果都是8,呵呵,道理就是这个。
      

  4.   

    java中处理移位运算都是转换成int类型再进行移位的
      

  5.   

    java中处理移位运算都是转换成int类型再进行移位的,因为2的5次方是32,而INT型的位数为32位