最低有效位(Least Significant Bit)表明二進制數中的最小的單位,能夠用來指示數字很小的變化。也就是說,LSB是一個二進制數字中的第0位(即最低位),具備權值爲2^0,能夠用它來檢測數的奇偶性。在大端序中,lsb指最右邊的位。fetch
最高有效位(the Most Significant Bit,msb),是指一個n位二進制數字中的n-1位,具備最高的權值2^n − 1。與之相反的稱之爲最低有效位。在大端序中,msb即指最左端的位。對於有符號二進制數,負數採用反碼或補碼形式,此時msb用來表示符號,msb爲1表示負數,0表示正數。spa
注意:input
(1)MSB(全大寫)有時也指the Most Significant Byte,指多字節序列中具備最大權重的字節。it
(2)LSB(全大寫)有時也指Least Significant Byte,指多字節序列中最小權重的字節。ast
public int findMissing(ArrayList<BitInteger> array)
{
/*
bit 0對應於LSB.以此爲起點,逐步向較高的位推動
*/
return findMissing(array,0);
}
public int findMissing(ArrayList<BitInteger> input,int column)
{
if(column>=BitInteger.INTEGER_SIZE)//終止條件或錯誤條件
{
return 0;
}
ArrayList<BitInteger> oneBits=new ArrayList<BitInteger>(input.size()/2);
ArrayList<BitInteger> zeroBits=new ArrayList<BitInteger>(input.size()/2);
for(BitInteger t:input)
{
if(t.fetch(column)==0)
{
zeroBits.add(t);
}
else
{
oneBits.add(t);
}
}
if(zeroBit.size()<=oneBits.size())
{
int v=findMissing(zeroBits,column+1);
return (v<<1)|0;
}
else
{
int v=findMissing(oneBits,column+1);
return (v<<1)|1;
}
}List