黑马程序员技术交流社区

标题: 哪位大神可以帮忙解答一下?? [打印本页]

作者: woshijingke    时间: 2016-5-15 09:57
标题: 哪位大神可以帮忙解答一下??
int i = 2;
for(int j = 31; j >=0; j--)
            if(((1 << j) &  i) != 0)
                System.out.print("1");
            else
                System.out.print("0");
        System.out.println();
上面的程序中if(((1<<j) & i) != 0)这句话怎么理解? 1左移几位就是1乘以2的几次幂,& i之后的结果是什么,两边都是数字啊。。。。。。。。
作者: lqy1991    时间: 2016-5-25 23:31
<<是左移位运算符,1<<j就是1乘2的j次方,(1<<j) & i 这个&是位与运算,举个例子,1&2得0,因为1的二进制是001,2的二进制是010,而001和010的位与运算是它们的每一位对应计算,即每一位有0得0,所有1&2得0




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