繁体   English   中英

精确的X位大小的变量支持按位运算(C ++)

[英]Exact X-bits sized variables that support bitwise operations(c++)

我正在尝试使用C ++中的位操作来解决问题,但我真的很困。 请通过以下查询帮助我。

1)是否可以创建变量A和B,它们恰好占用了100000bit的内存,并且像A&B这样的操作对它有效?

2)是否有一种快速的方法来生成B(100000bits),使其前n位为0,后m位为0,其余为1? (例如,如果B为10位,则为0000011000之类的数字)

当然,在回答1时,这就是类的目的。 只需创建一个包含100,000位(约12.5K)的类并重写operator&方法(二进制的,而不是address-of运算符)。

一个很好的开始(例如,我们有两个整数保存位掩码):

BigBits BigBits::operator &(const BigBits &that) const {
    BigBits bb(*this);
    bb.array[0] = this->array[0] & that.array[0];
    bb.array[1] = this->array[1] & that.array[1];
    return bb;
}

这未经测试,但应该可以为您提供基本的思路。 为了测试它,我必须编写一些代码,包括构造函数,析构函数,赋值等等,而这实际上应该是您的任务:-)

回答两个,这也很容易。 唯一的特技位是两个边缘字节,所有内部字节都只能设置为全部1位。

为了设置边缘字节,您可以使用除法位和一个字节中的位数进行模运算,然后使用位掩码进行设置。 所述位掩码是0x800xc00xe00xf00xf8等等,其中每个随后的值添加另一1个比特。

然后,您将以各种形式使用bitmask[bitpos % 8]设置边缘字节,该字节的数组索引将为bitpos / 8

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM