支持三值逻辑的 C++ 库 : 0, 1,X

标签 c++ tribool

我正在开发用 C++ 编写的微处理器模拟器。

我正在寻找一种方法来对刚刚启动且尚未以任何方式重置的硬件中的状态元素进行建模。真实状态元素会有一个未知值,即 0 或 1,但在软件模型中,这通常建模为 X,表示未知

我正在寻找一个 C++ 库,它可以对这些 X 值进行建模,包括它们的传播。也就是说,它必须知道如何使用 Xes 处理逻辑和算术运算:

1 AND X = X
0 AND X = 0
1  +  X = X

等...

有没有这样既稳定又快速的库?

编辑:

我没有提到我当前的代码使用位 vector 。更准确地说,我使用标准的 uint_*t 数据类型,这些是我想要替换的。无论我使用什么库,它必须支持算术、移位和逻辑运算符才能发挥作用。

最佳答案

尝试 Boost.Tribool .

The tribool class acts like the built-in bool type, but for 3-state boolean logic. The three states are true, false, and indeterminate, where the first two states are equivalent to those of the C++ bool type and the last state represents an unknown boolean value (that may be true or false, we don't know).

你可以看到 test suitheader documentation对于此类支持的规则。

Boost 库质量相当高且维护良好,因此您无需担心其稳定性。还有“快”……好吧,像这样的简单类很难变慢 :)。这些操作是通过 2 到 3 个整数比较与 1 或 2 个 if 子句实现的,因此它应该足够有效。

关于支持三值逻辑的 C++ 库 : 0, 1,X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3872717/

相关文章:

c++ - 错误 : 'current_millis' was not declared in this scope

c++ - GetDeviceCaps获取的物理屏幕尺寸不是我屏幕的实际物理尺寸

c++ - 受控序列与关联序列?

c++ - 具有引用成员的默认复制分配运算符?

c++ - boost tribool 使用率

c++ - C++11 或 C++14 是否支持三值或多值逻辑?

c++ - 如何在运行时检查类型?

C++ boost tribool三元运算符错误值

c++ - Boost::tribool:奇怪的行为,还是错误?