Tag: bitarray

反转位数组中的位顺序

我有一个很长的位序列存储在一个无符号长整数数组中,就像这样 struct bit_array { int size; /* nr of bits */ unsigned long *array; /* the container that stores bits */ } 我试图设计一种算法来反转*数组中的位顺序。 问题: size可以是任何东西,即不一定是8或32等的倍数,因此输入数组中的第一位可以在输出数组中的unsigned long内的任何位置结束; 算法应该是平台无关的,即适用于任何sizeof(unsigned long) 。 代码,伪代码,算法描述等 – 欢迎任何比bruteforce(“一点一滴”)方法更好的方法。

用于搜索连续置位/清除位的位数组的快速代码?

有没有一些相当快的代码可以帮助我快速搜索大的位图(几兆字节)运行连续的零或一位? 通过“合理快速”,我的意思是可以利用机器字大小并一次比较整个单词,而不是进行逐点分析,这种分析非常慢(例如使用vector )。 它对于例如在卷的位图中搜索可用空间(用于碎片整理等)非常有用。

C / C ++位数组或位向量

我正在学习C / C ++编程并遇到过“位数组”或“位向量”的用法。 我无法理解他们的目的? 这是我的疑惑 – 它们是否用作布尔标志? 可以使用int数组吗? (当然更多的记忆,但..) 这个Bit-Masking的概念是什么? 如果位掩码是简单的位操作以获得适当的标志,那么如何为它们编程? 是不是很难在头脑中做这个操作,看看标志会是什么,与十进制数相对应? 我正在寻找应用程序,以便我能更好地理解。 对于Eg – 问:您将获得一个包含范围内的整数(1到1百万)的文件。 有一些重复,因此缺少一些数字。 找到找到丢失数字的最快方法? 对于上面的问题,我已经阅读了解决方案,告诉我使用位数组。 如何将每个整数存储一下?