A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 403806022 中级黑马   /  2016-4-12 23:07  /  641 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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

请问这题怎么分析啊

1 个回复

倒序浏览
我们来先看看if中的条件若成立,即(1<<j)&i==1,&是与运算位,i=2,故1<<j是2,<<是向左移,根据运算规则,可以得到j=1,因此可以得到只有j=1时才会执行if中的语句,输出1;j为其他值时执行else语句,输出0。答案自然就是B
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马