-1

我正在尝试制作 Brainfuck 的超压缩变体,这是一种具有 8 条指令的深奥编程语言。由于 3 位是存储 8 个值的最小存储量,所以我选择了它。我坚持的部分是如何读取不是 2 的幂的位数。

我尝试使用std::bitset,但这只是序列化为每位 1 个字节的字符串,这与我想要的相反。我该怎么办?

4

2 回答 2

5

一次读取 3 个字节,然后使用 >> 和 & 运算符将它们分成 8 组,每组 3 位。将这些放在一个普通的 uint8_t 数组中,以简化以后的访问和跳转。

于 2018-02-16T13:32:15.387 回答
4

您不是从流中读取位,而是从流中读取字节。

因此,您必须这样做,然后根据需要使用按位算术将组件位随机排列。

顺便说一句,计算机以字节为单位的事实也意味着您的许多程序(任何没有 8 条指令的倍数的程序)必然会浪费空间。

于 2018-02-16T13:33:51.867 回答