我正在尝试制作一个超压缩的brainfuck变体,这是一种带有8条指令的深奥编程语言。由于3位是存储8个值的最小存储量,所以我选择了它。我坚持的部分是如何读取一些不是2的幂的位。
我尝试使用std::bitset
,但这只是序列化为每位1字节的字符串,这与我想要的相反。我该怎么做呢?
答案 0 :(得分:5)
一次读取3个字节,并使用>>将它们分成8个3位包。和&运营商。将它们放在普通的uint8_t数组中,以简化以后的访问和跳转。
答案 1 :(得分:4)
您不从流中读取位,而是从流中读取字节。
所以,你必须这样做,然后按照你希望的方式使用按位算术来移动组件位。
顺便说一句,计算机以字节为单位工作的事实也意味着你的许多程序(任何没有多达8条指令的程序)都必然会浪费空间。