黑马程序员技术交流社区

标题: 关于进制问题 [打印本页]

作者: 403806022    时间: 2016-4-12 23:07
标题: 关于进制问题

14.设以下是应用程序中定义的方法printBinary,若在其main方法中有方法调用语句printBinary(2),则输出的结果是 (  B )。
static void printBinary(int i) {
        System.out.print(i + "的2进制数表示为:\t");
        for(int j = 31; j >=0; j--)
            if(((1 << j) &  i) != 0)
                System.out.print("1");
            else
                System.out.print("0");
        System.out.println();
  }
A) 00000000000000000000000000000001
B) 00000000000000000000000000000010       
C) 00000000000000000000000000001111
D) 00000000000000000000000000000000

请问这题怎么分析啊
作者: wxz    时间: 2016-4-12 23:27
我们来先看看if中的条件若成立,即(1<<j)&i==1,&是与运算位,i=2,故1<<j是2,<<是向左移,根据运算规则,可以得到j=1,因此可以得到只有j=1时才会执行if中的语句,输出1;j为其他值时执行else语句,输出0。答案自然就是B




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2