通配符掩码通常用于网络。
通配符掩码通常具有"通配符"位表示该位可以是0或1。 这个二进制通配符掩码(其中x' s表示通配符位)
10xx
涵盖了所有这些价值观:
1000
1001
1010
1011
是否有一种增加/减少位掩码的有效方法? 例如......
x011 + 0111 + xx01 + xxx0 + 1111 = xxxx
答案 0 :(得分:0)
有几种常用方法可以用通配符表示位掩码,这里有如何计算" join" (由输入表示的集合的联合,然后"向上舍入"到至少包含该集合的最严格的掩码)
由一对掩码known, value
(简称k,v)组成,其中known
有一个iff,一个有固定值,0为通配符。 value
具有非通配符位的值,对于通配符位,该值本身不相关,但如果选择它,则会简化数学运算。
示例中掩码的表示将是
known value
x011 0111 0011
0111 1111 0111
xx01 0011 0001
xxx0 0001 0000
1111 1111 1111
其中两个(kr, vr) = (ka, va) ⋁ (kb, vb)
的加入是
kr = ka & kb & ~(va ^ vb) // known if known in both inputs and same value
vr = va & kr // value is the same as in either input, with wildcards normalized to 0
令人困惑的名字,但它是一对掩码,其中Z(零)有1 iff该位可以是0(因此它是0或通配符)而O(一)有1如果该位可以是1(所以它是1或通配符)。与已知/价值相比,它有一些优点和缺点,
示例中掩码的表示将是
Z O
x011 1100 1011
0111 1000 0111
xx01 1110 1101
xxx0 1111 1110
1111 0000 1111
其中两个(zr, or) = (za, oa) ⋁ (zb, ob)
的加入是
zr = za | zb
or = oa | ob