如何区分二元决策图的正整数和负整数

How to distinguish between positive and negative integers for Binary Decision Diagrams

我有一个包含值的 CSV 文件,我目前正在制定一个命题公式。

这是一个示例:

 x=6,y=-5,z=4.
 6 = 110
-5 = 1101 
 4 = 100

我的公式:

( (x2 and x1 and not (x0)) and (y3 and y2 and not(y1) and y0) and (z2 and not(z1) and not(z0)) )

现在我用同样的方法生成了一个 BDD。如果我想让 human/embedded 系统从我的图表中理解,1101 可以表示为 13 或 -5。任何负数都可以有 2 种表示。有什么办法可以只给一个吗?

你有各种各样的可能性。下面主要复述负数的补码表示的动机 (https://en.wikipedia.org/wiki/Two%27s_complement).

  1. 对所有数字使用相同的位数,例如用 8 位写出所有数字,然后使用第一位作为符号

     6 = 00000110
    -5 = 10000101 
     4 = 00000100
    

数字零将有两种表示形式:00000000 和 10000000(+0 和 -0)。 如果您使用 ZDD(零抑制 BDD)而不是普通的 ROBDD,您将获得非常紧凑的表示。

  1. 使用最后一位作为符号,这对于执行算术会非常棘手,但对于表示来说不是问题。

     6 = 1100 (110 + 0)
    -5 = 1011 (101 + 1) 
     4 = 1000 (100 + 0)
    

您可以设置规则,第一个(最左边的)位必须始终为 1。在这种情况下,数字零唯一表示为 1。ROBDD 将使它成为一个紧凑的表示。

  1. 使用二进制补码,请注意,这需要固定位数,与第一个提案相同