黑马程序员技术交流社区
标题:
自定义BitArray类中,左移和右移运算问题?
[打印本页]
作者:
杨占伟
时间:
2012-11-30 16:15
标题:
自定义BitArray类中,左移和右移运算问题?
定义一个BitArray类:
public class BitArray
{
int[] bits;
int iLength;
public BitArray(int length)
{
if (length < 0)
{
throw new ArgumentException();
}
bits = new int[((length - 1) >> 5)+1];
this.iLength = length;
}
public bool this[int index]
{
get
{
if (index < 0 || index >= iLength)
{
throw new IndexOutOfRangeException();
}
return (bits[index >> 5] & 1 << index) != 0;
}
set
{
if (index < 0 || index >= iLength)
{
throw new IndexOutOfRangeException();
}
if (value)
{
bits[index >> 5] |= 1 << index;
}
else
{
bits[index >> 5] &= ~(1 << index);
}
}
}
}
bits = new int[((length - 1) >> 5)+1]; //实现这个BitArray类,为这一步要 length-1 然后再 或移 5位 再加1.还有没有其它更好的办法?
return (bits[index >> 5] & 1 << index) != 0; // 这句该怎么解释?
bits[index >> 5] |= 1 << index; //这个如果索引index 的值是50 这个表达式的值是多少?
bits[index >> 5] &= ~(1 << index); //如索引index的值是50 这个表达戒指值是多少?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2