byte bt = (byte) rand.nextInt();
BitSet bb = new BitSet();
for (int i = 7; i >= 0; i--)
if (((1 << i) & bt) != 0)
bb.set(i);
else
bb.clear(i);
 在该代码块中if(((1 << i) &bt)!= 0)是用来判断什么条件?

解决方案 »

  1.   

    1)byte类型是有符号位的
    byte bt = (byte) rand.nextInt()
    产生一个-128-127的整数(byte:一个字节8位)
    2)if (((1 << i) & bt) != 0)左移一位(相当于乘2) 与产生的整型型按位与 ,判断结果是否为0
      

  2.   

    byte bt = (byte) rand.nextInt():负128到正127之间
      

  3.   

    我想知道的是哪条if语句使得set保存了什么数据?
      

  4.   

    1左移i位之后和 再bt相与 判断是否为 0
      

  5.   

    这段完成的工作是将随机取得的字节型数据bt转化为对象型BitSet数据bb
    for (int i = 7; i >= 0; i--) {
        if (((1 << i) & bt) != 0)
            bb.set(i);
        else
            bb.clear(i);
    }
    具体细节是 1左移i位后,得到一个只有第i位为1的数据,在与上bt,如果结果不为零,
    则表示bt第i位为1,bb在第i位设为真,反之设为假。
      

  6.   

    额也搞不懂,这(((1 << i) & bt) != 0)要筛选出什么