免责声明:我问这些与作业有关的问题。任务本身要求实现一个位图并用它做一些操作,但这不是我要问的。我只是想了解这些概念,以便我可以自己尝试实现。
我需要帮助理解位图/位数组和按位运算。我了解二进制的基础知识以及左/右移位的工作原理,但我不知道这种使用到底有什么好处。
基本上,我需要实现一个位图来存储(Eratosthenes 的)素筛的结果。这是专注于不同 IPC 方法的大型作业的一小部分,但要到达那部分,我需要先完成筛子. 我从来不需要使用按位运算,也从来没有学过位图,所以我有点靠自己来学习这个。
据我所知,位图是具有一定大小的数组,对吧?我的意思是你可以有一个 8 位数组或 32 位数组(在我的情况下,我需要找到 32 位无符号整数的素数,所以我需要 32 位数组。)所以如果这是一个位数组,具体来说是其中的 32 个,那么我们基本上是在谈论由 32 个 1 和 0 组成的字符串。这如何转化为素数列表?我认为一种方法可以评估二进制数并将其作为十进制数保存到一个新数组中,因此所有小数素数都存在于一个数组中,但这似乎您使用了太多数据。
我有位图的要点吗?还是我缺少什么?我已经尝试在互联网上阅读有关此内容的信息,但找不到对我来说足够清楚的来源...