黑马程序员技术交流社区

标题: 自定义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