gpt4 book ai didi

c - 在内存中存储各个位

转载 作者:行者123 更新时间:2023-11-30 14:31:51 25 4
gpt4 key购买 nike

所以我想在内存中存储长度为1到8(一个字节)的随机位。我知道计算机的效率不足以在内存中存储单个位,并且我们必须在大多数现代机器上至少存储一个字节数据。我一直在对此进行一些研究,但尚未发现任何有用的 Material 。我需要找到一种方法来存储这些位,例如,当从内存读回这些位时,0 不能被评估为 00、0000 或 00000000。为了进一步解释,例如,不能读回 010或就此进行评估,如 00000010。根据值及其基数,数字应该是唯一的。

更多示例;

1 ≠ 00000001

10 ≠ 00000010

0010≠00000010

10001 ≠ 00010001

等等...

我想再次指出的一件事是,位大小始终在 1 到 8(含)之间,并且不是固定数字。我正在使用 C 来解决这个问题。

最佳答案

因此,您希望将位存储在内存中并在不知道它们有多长的情况下读回它们。这不可能。 (字节也不可能)

想象一下如果你能做到这一点。然后我们可以压缩文件,例如,“0”压缩为“0”,“1”压缩为“00”。经过“压缩”(实际上会使文件变大)后,我们得到的文件中只有 0。然后,我们通过记下有多少个 0 来压缩仅包含 0 的文件。惊人的!任何 2GB 文件都会压缩为仅 4 个字节。但我们知道不可能将每个 2GB 文件压缩为 4 个字节。所以这个想法有问题。

您可以从内存中读取几个位,但您需要知道正在读取多少位。如果您知道正在读取多少位,但组合不会“重叠”,您也可以这样做。因此,如果“01”是有效组合,则不能有“010”,因为它会与“01”重叠。但你可以有“001”。这称为 prefix code它用于 Huffman coding ,一种压缩。

当然,您也可以保存每个数字之前的长度。因此,您可以将“0”保存为“0010”,其中“001”表示数字的长度。对于 3 位长度,最多只能有 7 位数字。或者,如果从长度中减去 1,则为 8 位数字,在这种情况下,不能有零位数字。 (因此“0”变为“0000”,“101”变为“010101”等)

关于c - 在内存中存储各个位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60039550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com