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

右移相当于除2,除不尽怎么处理

2012-01-10 
右移相当于除2,除不尽怎么办?classTest{publicstaticvoidmain(Stringargs[]){inti-3System.out.println(

右移相当于除2,除不尽怎么办?
class   Test
{
public   static   void   main(String   args[])
{
int   i=-3;
System.out.println(Integer.toBinaryString(i < <1));
System.out.println(Integer.toBinaryString(i*2));
System.out.println(Integer.toBinaryString(i> > 1));
System.out.println(Integer.toBinaryString(i/2));
}
}

[解决办法]
右移相当于除2取整
[解决办法]
你应该关注一下整除
[解决办法]
补0
是整除
[解决办法]
想想十进制

54321,右移一位是5432,想当于带除10
[解决办法]
对于负数,是不一样的。

System.out.println(Integer.toBinaryString(-3));
System.out.println(Integer.toBinaryString(-3> > 1));
System.out.println(Integer.toBinaryString(-3/2));
System.out.println(Integer.toBinaryString(-1));

输出是:

11111111111111111111111111111101
11111111111111111111111111111110
11111111111111111111111111111111
11111111111111111111111111111111

发现问题没有?
第一行输出是-3
第二行输出是-3右移一位,由于是负数,高位补1
第四行输出是-1
而第三行输出跟第四行输出一样,说明什么?这就说明是输出的是-(3/2),即-1

明白?

热点排行