A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨占伟 中级黑马   /  2012-11-30 16:15  /  1029 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

定义一个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 这个表达戒指值是多少?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马